로그를 재정렬하라. 기준은 다음과 같다.
1. 로그의 가장 앞 부분은 식별자다.
2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
3. 문자 로그는 내용에 따라 사전순으로 정렬됩니다. 내용이 같으면 식별자를 기준으로 사전순으로 정렬합니다.
4. 숫자 로그는 입력 순서대로 한다.
먼저 로그가 숫자인지 문자인지를 판별해서 서로 분리해준다.
strs = []
nums = []
for log in logs:
if log.split()[1].isdigit():
nums.append(log)
else:
strs.append(log)
판별에는 식별자 후 문자가 숫자인지를 판별해서 넣어주었다.
숫자 로그들은 입력순이기 때문에 따로 정렬할 필요가 없으나, 문자는 동일할 경우 식별자 순으로 한다는 조건이 있다.
그러므로 sort의 lambda를 이용하여 다시 정렬해준다. 정렬의 첫번째 조건은 식별자를 제외한 문자열, 그리고 두번째 조건은 문자열이 같을 때 식별자 순이라고 하였으므로 식별자로 지정해준다.
strs.sort(key=lambda x: (x.split()[1:], x.split()[0]))
전체코드는 다음과 같다.
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
strs = []
nums = []
for log in logs:
if log.split()[1].isdigit():
nums.append(log)
else:
strs.append(log)
strs.sort(key=lambda x: (x.split()[1:], x.split()[0]))
return strs + nums
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[Q. 05] 그룹 애너그램 (0) | 2023.03.16 |
---|---|
[Q. 04] 가장 흔한 단어 (0) | 2023.03.15 |
[Q. 02] 문자열 뒤집기 (0) | 2023.03.15 |
[Q. 01] 유효한 팰린드롬 (0) | 2023.03.15 |
[Q7] 두 수의 합 (0) | 2022.12.17 |