Notice
Recent Posts
Recent Comments
Link
archive
[leetCode] Reorder data in log files (Python) 본문
✏️ 문제
Reorder Data in Log Files - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
✏️ 풀이
문제에서 제시된 대로 sort, sorted에 함수에 정렬 우선순위를 정해줘야하는 문제이다.
아직 sort함수와 lambda에 익숙하지 않고,
경우에 따라서 정렬기준이 달라져서 어려웠다
✏️ 코드
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
# 정렬 우선 순위
# 1. let
# 1-1. contents
# 1-2. identifiers
# 2. digit
logs.sort(key = lambda x : (x[:3]=="dig", x[5:],x[:4]))
return logs
일단은 위와 같이 다중 조건을 주었는데,,
1-2 조건까지는 충족을 하지만
2의 경우 원래의 순서를 유지해야 하는데 2도 함께 정렬되어 버리는 문제가 있다.
(추가) 문제를 다시 읽어보니 identifier도 그때그때 다르기 때문에 아래와 같이 슬라이싱으로 처리해줘야한다.
✏️ 다른 사람 풀이 (출처 : 파이썬 알고리즘 인터뷰)
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
전처리 과정에서 문자로그와 숫자로그를 각각 리스트에 저장한다.
숫자로그는 정렬하지 않으므로 마지막에 덧붙인다.
문자로그 정렬은 contents, identifers 우선으로 정렬한다.
✏️ 생각
생각보다 숫자로그만 순서를 유지하는게 간단하네,,,, 😂
너무 깔끔하게만 풀려고 오히려 어렵게 생각하는 버릇을 버리자
'STUDY > 알고리즘' 카테고리의 다른 글
[leetCode] Longest Palindromic Substring (Python) (0) | 2021.02.07 |
---|---|
[leetCode] Most Common Word (Python) (0) | 2021.02.02 |
[leetCode] Valid Palindrome (Python) (0) | 2021.01.28 |
알고리즘 문제풀이 단계 (0) | 2021.01.18 |
[프로그래머스] 두 수 뽑아서 더하기 (0) | 2021.01.14 |
Comments