[LeetCode] 937. Reorder Log Files (로그 파일 재정렬)

yunan·2021년 1월 14일
0
post-thumbnail

🔦 문제 링크

🔊 파이썬 알고리즘 인터뷰 책을 참고했습니다.

  1. 로그의 앞 부분은 식별자이다.
  2. 문자로그는 숫자로그보다 항상 앞에 존재한다.
  3. 문자가 동일할 경우 식별자를 기준으로 정렬한다.
  4. 문자로그면 문자만, 숫자로그면 숫자만을 가진다.
  5. 숫자로그는 입력 그대로를 유지한다.
  • 입출력
Input : logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]

✍️ 풀이


  • 문자로그는 항상 앞에 존재하므로 문자로그와 숫자로그를 다른 리스트로 구분해둔다.
  • 문자로그는 정렬이 필요하며 정렬을 위한 값으로는 value값과 식별자를 사용한다.
    • 어떤 값을 우선 순위로 사용할 지도 지정해줘야한다.

🛠 코드

  • 리스트를 원소를 앞-뒤로 검사하는 가장 기본적인 풀이방법이다.

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        digit = []
        letter = []
        for log in logs:
            if log.split()[1].isdigit():
                digit.append(log)
            else:
                letter.append(log)

        letter.sort(key=lambda x: (x.split()[1:], x.split()[0]))
        return letter + digit

📝 정리


  • letter.sort(key=lambda x: (x.split()[1:], x.split()[0]))
    를 통해 정렬을 위한 key값을 지정할 수 있다.

🎈 참고


Book 링크

profile
Go Go

0개의 댓글