[파이썬 알고리즘] 로그 파일 재정렬

tester·2021년 1월 25일

알고리즘

목록 보기
3/26
post-thumbnail

로그 파일 재정렬

로그를 재정렬하라. 기준은 다음과 같다.

  1. 로그의 가장 앞 부분은 식별자이다.
  2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
  3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우 식별자 순으로 한다.
  4. 숫자 로그는 입력 순서대로 한다.

ex)

input: ["digl 8 1 5 1", "letl art can", "dig2 3 6", "let2 own kit dig", "let3 art zero"]
output: ["letl art can", "let3 art zero", "let2 own kit dig", "digl 8 1 5 1", "dig2 3 6"]

파이썬의 split 메소드를 통하여 list에 있는 string을 파싱한 뒤, 조건에 맞게 sorting 및 정렬한다.

문자로 구성된 로그가 숫자 로그보다 앞에 와야 하므로, 서로를 구분해서 정리한 뒤, 마지막에 순서에 맞게 합쳐줄 수 있다.

# reorder.py
def reorderLogFiles(logs):
    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

위의 코드에서 사용한 람다 함수는 식별자 없이 실행 가능한 함수를 말하며, 함수 선언 없이도 하나의 식으로 함수를 단순하게 표현할 수 있다.

위의 식에서 x가 함수의 입력값이며, : 이후의 부분이 return 값이 된다.

profile
모듈깎는 장인이 되고싶다

0개의 댓글