본문 바로가기

프로그래머/Python

[Python] Leet Code 937 : Reorder Log Files 풀이 및 분석

본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.

Leet Code 937 : Reorder Log Files

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

포인트

  • 로그의 두번째 원소를 기준으로 .isdigit()을 사용하여 두 개의 리스트로 분류(letters, digits)
  • lambda를 이용한 sort
  • 문자가 동일한 경우 식별자 순
    • key=lambda x: (x.split()[1:], x.split()[0]) 으로 두면, x.split()[1:] 조건을 우선순위로 하고, 이후 x.split()[0]도 고려한다
  • 숫자 로그는 입력 순서대로 한다(letters + digits)