리트코드 937번 문제는 주어진 로그를 조건에 맞춰 분류 및 정렬하는 문제이다.
https://leetcode.com/problems/reorder-data-in-log-files/
문제풀이
1. sorted()
파이썬에서는 sort() 혹은 sorted() 메서드를 이용해 리스트를 손쉽게 정렬할 수 있다. 둘의 차이라면 sort()는 정렬할 수 있는 대상이 list에 한정되며 기존 list의 인덱스가 영향을 받아 바뀐다는 것이고, sorted()는 list뿐만 아니라 iterable한 객체(String, Tuple, Dictionary, Generator)에 모두 적용이 가능하며 기존 list의 인덱스는 영향을 받지 않는다는 점이다.
2. lambda 식을 이용해 여러 개의 키로 리스트 정렬하기
기본적으로 sorted(list) 는 오름차순으로 정렬된 리스트를 반환한다. 그러나 이 문제에서는 정렬 조건이 조금 까다롭기에 lambda 식을 이용하는 것이 편리하다. 파이썬에서는 sorted() 메서드 내에 람다식을 이용해 여러 개의 정렬기준(key)을 설정해줄 수 있다.
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letter_log = []
digit_log = []
for x in logs:
if x.split(" ")[1].isalpha():
letter_log.append(x)
else:
digit_log.append(x)
letter_log = sorted(letter_log, key=lambda x: (x.split(" ")[1:], x.split(" ")[0]))
return letter_log + digit_log
람다식은 이름 없는 함수이며, 함수 선언 없이도 함수 식을 간단히 표현해줄 수 있다는 장점이 있다. 반면, 복잡한 람다식을 사용하는 경우 코드의 가독성을 떨어트릴 수 있으므로 주의해야 한다. 위 풀이에서 사용한 람다식을 다시 함수로 풀면 다음과 같이 쓸 수 있다.
def get_key(x):
return x.split(" ")[1:], x.split(" ")[0]
반응형
'etc' 카테고리의 다른 글
[Dev] 좋은 API란 무엇일까 - API First Design 원칙 (0) | 2022.08.27 |
---|---|
[대학원 입시] 서울대학교 컴퓨터공학부 구술고사 후기(22년 전기) (10) | 2022.01.04 |
[Hadoop] - 아파치 하둡 입문(1) (0) | 2021.01.28 |
[Hadoop] - Hadoop 설치 시 macOS 원격로그인이 안 되는 경우 해결(localhost: ssh: connect to host localhost port 22: Connection refused) (0) | 2021.01.27 |
[Hadoop] - hadoop fs -ls 명령어 실행 시 No such file or directory 오류 해결 (0) | 2021.01.27 |
댓글