LeetCode 937. Reorder Data in Log Files

개발공부를해보자·2025년 1월 4일

LeetCode

목록 보기
3/95

파이썬 알고리즘 인터뷰 문제 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의-대소-비교에-대해

profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글