풀지 못했다. 그렇게 어려운 문제가 아닌데 지레 겁을 먹었다. 문제를 차근차근 읽자.
def reorderLogFiles(logs: List[str]) -> List[str]:
letters, digits = [], []
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
문자로 구성된 로그가 숫자로 된 로그보다 앞에 와야하므로 로그가 숫자로 된 것인지 문자로 된 것인지 구분해서 저장한다. 문자로 된 로그는 로그의 식별자 뒷 부분을 우선으로 기준하여 정렬하고, 같으면 식별자를 기준으로 정렬한다. 한편 숫자로 구성된 로그는 입력 순서대로이므로 그냥 그대로 이용한다.
한꺼번에 꼭 정렬을 해야한다는 생각을 깨자. 구분을 해서 정렬을 해도 된다.