목차
문제
- https://leetcode.com/problems/reorder-data-in-log-files/description/
- Runtime: 42ms, Memory 16.56MB
- 주어진 문자열 리스트를 아래 규칙에 따라 정렬한다.
- 문자열은 띄어쓰기를 기준으로 분리가 가능, 분리된 첫 부분은 Key가 된다.
- key를 제외하고는 모두 문자열인 경우가, 모두 숫자인 경우 앞에 온다.
- 모두 문자열인 경우는 사전순으로 나열한다.
- 숫자는 input으로 주어진 순서 그대로 나열한다.
내 풀이
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letter_logs, digit_logs = [], []
for log in logs:
# 로그를 띄어쓰기로 분리
contents = log.split(" ")
# 키를 제외한 값에서 로그를 판단 (마지막 값)
# 숫자 로그와 문자 로그를 분리해 리스트에 저장
if contents[-1].isdigit():
digit_logs.append(log)
else:
letter_logs.append(log)
# 문자 로그 리스트를 정렬
letter_logs.sort() #전체 기준
letter_logs.sort(key=lambda x: ' '.join(x.split(" ")[1:])) #키 제외하고
# 두 리스트를 병합
letter_logs.extend(digit_logs)
return letter_logs
참고 사항
# 아래와 같은 2번의 정렬을 더 간단하게 변경
# 정렬 우선순위가 (1)첫 부분 제외 알파벳 순 정렬 (2)전체를 알파벳 순으로 정렬
letter_logs.sort() #(2)
letter_logs.sort(key=lambda x: ' '.join(x.split(" ")[1:])) #(1)
# 튜플 형식을 반환해, 주어진 순서대로 정렬 기준으로 삼는다.
letter_logs.sort(key=lambda x: (x.split(" ")[1:], x.split()[0]))
반응형
'Computer Science > Problem Solving' 카테고리의 다른 글
[LeetCode > Medium > 5] Longest Palindromic Substring (0) | 2024.06.09 |
---|---|
[LeetCode > Medium > 49] Group Anagrams (0) | 2024.06.09 |
[LeetCode > Easy > 819] Most Common Word (0) | 2024.06.09 |
[LeetCode > Easy > 344] Reverse String (0) | 2024.06.09 |
[LeetCode > Easy > 125] Valid Palindrome (0) | 2024.06.06 |