Algorithms/LeetCode

LeetCode #937 Reorder Data in Log Files

8iggy 2021. 4. 24. 17:36

읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 배운 점을 정리한 글입니다.

문제 링크

LeetCode #937 Reorder Data in Log Files

문제 풀이

let 로그는 항상 dig 로그보다 앞에있고 사전식으로 내용 기준 정렬해야 한다. 그리고 문자가 같을 시 식별자 순으로 나열하면 된다. dig 로그는 입력 순서 그대로 유지한다고 명시되어 있다. 따라서, let과 dig 로그를 서로 분리한 뒤 let 로그를 정렬한 뒤 정렬된 let 로그 + dig 로그를 반환하면 된다.

python 코드

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        dig, let = [], [] # dig와 let 로그 분리
        for log in logs:
            if log.split()[1].isdigit(): # 식별자 다음 값이 숫자면
                dig.append(log) # dig 목록에 추가
            else: # 숫자가 아니면
                let.append(log) # let 목록에 추가
        let.sort(key=lambda x: (x.split()[1:], x.split()[0]))
        # let 로그는 사전식으로 정렬하고 문자가 같으면 식별자 순으로 정렬
        # lambda x를 정의한 후 정렬 기준으로 (식별자 다음 값, 식별자) 입력
        # 위 코드대로 람다표현식을 사용하면 정렬 기준의 우선순위를 둘 수 있다.
        return let + dig