본문 바로가기
Algorithm

(leetcode) Reorder Data in Log Files

by 안자바먹지 2021. 1. 4.
728x90

로그파일 재정렬 기준은 아래와 같다.

  1. 로그의 가장 앞부분은 식별자다
  2. 문자로 구성된 로그가 숫자로그보다 앞에 온다
  3. 식별자는 순서에 영향을 끼치지 않지만 문자가 동일할 경우 식별자 순으로 한다.
  4. 숫자로그는 입력 순서대로 한다.

입력

logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]

 

출력

["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]

 

풀이

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        letters , digits = [], []
        for log in logs:
            if log.split()[1].isdigit():
                digits.append(log)
            else:
                letters.append(log)
        
        letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
        return letters + digits

 

문자로 구성된 로그가 숫자로 구성된 로그보다 더 앞에오고, 숫자로 구성된 로그는 입력 순서대로 둔다. 

isdigit() 을 사용하여 숫자여부를 판단하여 각각 letters 와 digits에 넣는다.

문자로 구성된 요소는 식별자를 제외한 문자열 [1:]을 키로 하여 정렬하고, 동일한 경우 후순위로 식별자 [0]을 지정하여 정렬 되도록 한다. (식별자를 제외한 문자열로 먼저 정렬 후 동일한 경우 식별자 순으로 정렬)

728x90

'Algorithm' 카테고리의 다른 글

(leetcode) Group Anagrams  (0) 2021.01.04
(leetcode) Most Common Word  (0) 2021.01.04
(leetcode) Valid Palindrome  (0) 2021.01.04
(백준) 10539번 : 수빈이와 수열  (0) 2019.10.07
(백준) 15969 : 행복  (0) 2019.10.07

댓글