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

2020. 12. 11. 10:19노트/Algorithm : 알고리즘

 

 

 

출처 : 파이썬 알고리즘 인터뷰 6장 

 

로그파일 재정렬

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

  1. 로그의 가장 앞 부분은 식별자다.

  2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.

  3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.

  4. 숫자 로그는 입력 순서대로 한다.

  • 입력

logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]

  • 출력

["let1 art can", "let3 art zoo", "let2 own kit dig", "dog1 8 1 5 1","dig2 3 6"]

 

logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]

# 풀이1 람다와 + 연산자를 이용 
def log_sort(logs):
    letters, digits = [], [] 
    for log in logs : 
        if log.split()[1].isdigit():
            digits.append(log)
        else : 
            letters.append(log)
    
    # 2개의 key를 람다 표현식으로 정렬 
    letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
    return letters + digits
    
log_sort(logs)
>>> ['let1 art can',
 'let3 art zero',
 'let2 own kit dig',
 'dig1 8 1 5 1',
 'dig2 3 6']