문제의 조건은 주어진 logs를 정렬하는데, 숫자부와 문자부를 나누어서 정렬함. (각 부는 첫 식별자 이후의 내용에 따라 나뉨.)
1) 문자부가 반드시 숫자부 앞에 와야함.
2) 숫자부는 기존 순서를 유지해야함.
3) 문자부는 내용의 사전순으로 정렬하는데, 내용이 같을 경우 식별자의 사전순으로 정렬함.
- 숫자부와 문자부를 분리하기 위해 for문과 isdigit() 함수를 사용함.
- 문자부에서, 내용과 식별자를 분리하기 위해 split함수를 사용함.
(maxsplit : split 횟수를 제한해줌.)- 식별자와 내용이 분리되었으므로 문제의 조건에 맞게 lambda식을 이용해 sort함.
- sort된 문자부와 숫자부를 합쳐서 return함.
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
digits = []
letters = []
for l in logs :
if l[-1].isdigit() == True :
digits.append(l)
else :
letters.append(l)
letters = list(map(lambda x : x.split(maxsplit = 1), letters))
letters.sort(key = lambda x : (x[1], x[0]))
letters = list(map(lambda x : ' '.join(x), letters))
return letters + digits