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