August 09, 2020
이 문제는 LeetCode에 소개된 문제이며 여기에서 문제를 풀어 볼 수 있습니다.
로그를 재정렬하라. 기준은 다음과 같다
Example 1:
Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
logdict = {}
digit = []
char = []
for i in logs:
log = i.split()
logdict[log[0]] = log[1:]
if logdict[log[0]][0].isdigit():
digit.append(i)
else:
char.append(i)
char.sort(key=lambda x: (x.split()[1:], x.split()[0]))
return char + digit
logs
의 각 요소를 split()
함수로 분리 한 뒤 그 첫번째 값을 키로 하는 딕셔너리 형태로 저장한 다음 해당 키의 값이 숫자면 (isdigit()
) digit
이라는 빈 리스트에 저장하고 문자라면 char
라는 빈 리스트에 하나씩 저장한다.
그 다음 문자열 값만 갖고 있는 char
을 정렬하는데(sort()
) 이때 lambda
식을 이용하여 기준값을 split()
함수로 분리 한 뒤 식별자를 제외 한 값을 첫번째 기준으로 하고 만약 동일한 경우 식별자를 두번째 기준으로 지정 하여 정렬한 다음 리스트 연산자 +
를 이용하여 문자열 값 + 수치형 값 형태로 합친 다음 반환하였다.