본문 바로가기

알고리즘

[알고리즘] 문자열조작-로그파일 재정렬 - Jungyu Ko

문제 출처

https://leetcode.com/problems/reorder-data-in-log-files/

 

Reorder Data in Log Files - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제 설명

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

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

예시

문제 풀이

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        letters= []    # 문자가 나오는 문장을 저장하기 위한 리스트
        digits = []    # 숫자가 나오는 문장을 저장하기 위한 리스트
        
        for log in logs:              # 입력 str 중 1개의 str씩 살펴보면서
            split = log.split(' ')    # 띄어쓰기 기준으로 split한다.
            
            if split[1].isdigit():    # 첫 번째는 식별자이므로 두 번째 문자가 숫자면
                digits.append(log)    # digits 리스트에 log를 추가한다.
            else:                     # 두 번째 문자가 문자라면
                letters.append(log)   # letters 리스트에 log를 추가한다.
        
        # letters를 정렬한다.
        # lambda x를 기준으로 정렬
        letters.sort(key=lambda x: (x.split(' ')[1:],x.split(' ')[0]))
        
        ans = letters + digits    # letters와 digits를 추가
        return ans