반응형
* leetcode 937. Reorder Log Files
Q. 로그를 재정렬하라. 기준은 다음과 같다.
- 로그의 가장 앞 부분은 식별자다.
- 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
- 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.
- 숫자 로그는 입력 순서대로 한다.
# 입력
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. 람다와 + 연산자를 이용
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letters, digits = [], []
# isdigit()을 활용하여 로그가 숫자 또는 문자인지 구분하여 따로 리스트에 저장하고,
# 나중에 문자 로그 + 숫자 로그로 리턴한다.
for log in logs:
if log.split()[1].isdigit():
digits.append(log)
else:
letters.append(log)
# 문자 로그만 람다 표현식을 사용하여 정렬
letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
return letters + digits
람다 표현식은 별도 함수를 선언하지 않고도 간단한 함수를 선언한 것 처럼 쉽게 처리할 수 있다.
# List Comprehension
def func(x):
return x.split()[1], x.split()[0]
s.sort(key=func)
# Lambda
s.sort(key=lambda x: (x.split()[1], x.split()[0]))
반응형
'프로그래밍 > [ Python ]' 카테고리의 다른 글
[문자열 조작] 그룹 애너그램 (0) | 2021.01.11 |
---|---|
[문자열 조작] 가장 흔한 단어 (0) | 2021.01.11 |
[문자열 조작] 문자열 뒤집기 (0) | 2021.01.11 |
[문자열 조작] 유효한 팰린드롬 (0) | 2021.01.11 |
[1-2] 파이썬 (0) | 2020.11.18 |