본문 바로가기

PYTHON

[python3 | 알고리즘] 13. 문자열 조작(로그파일 재정렬)

728x90
반응형
[조건]

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 zero", "let2 own kit dig", "dig1 8 1 5 1", "dig2 3 6"]

 

 

1. 람다 + 연산자 이용

 

  - 문자 vs 숫자 구분

def reorderLogFiles(self, logs: List[str]) -> List[str]:
    letters, digits = [], []
    
    # 문자 vs 숫자 구분
    for log in logs:
        if log.split()[1].isdigit():
            digits.append(log)
        else:
            letters.append(log)

    # 2개의 키를 람다 표현식으로 정렬
    # key(x.split()[1:])를 기준으로 정렬하고, 동일한 경우 x.split()[0] 으로 정렬 
    letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))

    # 리스트 합치기
    return letters + digits

 

 

 

 

728x90
반응형