파이썬 알고리즘 인터뷰 문제 3번(리트코드 937번) Reorder Data in Log Files
https://leetcode.com/problems/reorder-data-in-log-files/
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letters = []
digits = []
for log in logs:
if log.split()[1].isnumeric():
digits.append(log)
else:
letters.append(log)
letters.sort(key = lambda x: (x.split()[1:], x.split()[0]))
return letters + digits
["j mo", "5 m w", "g 07", "o 2 0", "t q h"]
letters.sort(key = lambda x: ("".join(x.split()[1:]), x.split()[0]))
“mo”, “m w”에서 공백이 제거하며 문자열 “mo”, “mw”로 비교가 되어 틀림.
letters.sort(key = lambda x: (x.split()[1:], x.split()[0]))
“mo”, “m w”가 리스트로 [”mo”], [”m”, “w”] 저장되며 공백이 반영되어 올바르게 반영됨.
이를 생각하지 못한 것은 리스트끼리 대소 비교가 되는 것을 떠올리지 못했기 때문이다.
리스트도 대소 비교가 되며 사전식 대소비교를 한다.
sort() 안에 매개변수 사용하는게 익숙하지 않다.
lambda 함수도 능숙하진 않다.
list도 대소 비교가 된다.
sorted(),.sort(),key=lambda에 대한 글
https://velog.io/@coding_study/sorted-.sort-key-lambda-reverse-True에-대해
list의 대소 비교에 대한 글
https://velog.io/@coding_study/lists의-대소-비교에-대해