본문 바로가기

알고리즘

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

728x90
 

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

나의풀이

def reorderLogFiles(self, logs: List[str]) -> List[str]:
        s=[]
        n=[]
        for idx,log in enumerate(logs):
            temp=list(log.split(' '))
            try:
                int(temp[1]) 
                n.append(log)
            except:
                s.append(log)
        # 같은 문자일 경우 식별자에 따라 정렬하는 부분을 못함.

같은 문자일 경우 이를 식별자에 따라 정렬해야하는데 같은 문자임을 알 수 있는 방법에 대하여 파악하지 못함.

풀이

def reorderLogFiles(self, logs: List[str]) -> List[str]:
        s=[]
        n=[]
        for idx,log in enumerate(logs):
            temp=list(log.split(' '))
            if log.split()[1].isdigit():
                n.append(log)
            else:
                s.append(log)
        s.sort(key=lambda x :(x.split()[1:], x.split()[0]))
        return s+n

lambda를 사용하돼 [1:]로 표현하여 1번 인덱스 이후로 정렬 후 똑같다면 식별자에 따라 정렬하게함. 

lambda 함수를 이용하여 키를 설정할때 split()로 분할 후 인덱스 슬라이싱을 사용할 수 있다는 사실을 알게됨.

반응형