728x90
로그파일 재정렬 기준은 아래와 같다.
- 로그의 가장 앞부분은 식별자다
- 문자로 구성된 로그가 숫자로그보다 앞에 온다
- 식별자는 순서에 영향을 끼치지 않지만 문자가 동일할 경우 식별자 순으로 한다.
- 숫자로그는 입력 순서대로 한다.
입력
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 |
댓글