937. Reorder Data in Log Files

kukudas·2022년 2월 14일
0

Algorithm

목록 보기
1/46

leetcode 937번 문제

isdigit() : 스트링의 모든 character가 digit(숫자)면 True리턴, 아니면 False 리턴함.

sort() : sort(*, key=None, reverse=False)
sort()는 key가 있는데 key를 사용해서 리스트를 정렬함.

Lamdas : lambda_expr ::= "lambda" [parameter_list] ":" expression
람다 표현식은 anonymous 함수를 만들기 위해서 사용됨. lambda parameters: expression는 함수 객체를 만들며, 이 이름이 없는 객체는 아래의 함수 객체랑 똑같이 동작함.

def <lambda>(parameters):
    return expression

정답

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        letters, digits = [], []

        for log in logs:
            # 문자로 구성된 로그는 digits으로
            if log.split(' ')[1].isdigit():
                digits.append(log)
            # 숫자로 구성된 로그는 letters로
            else:
                letters.append(log)
        
        # sort 함수의 key(정렬의 기준을) 로그의 식별자를 제외한 나머지 부분으로 한 번 정렬하고 문자가 동일할 경우에는 식별자로 정렬해줌.
        letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
        return letters + digits

참고자료1
참고자료2
참고자료3

0개의 댓글