[리트코드 937] Reorder Log Files
로그를 재정렬하라. 기준은 다음과 같다.
1. 로그의 가장 앞부분은 식별자다.
2. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.
3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우 식별자 순으로 한다.
4. 숫자 로그는 입력 순서대로 한다.
먼저 로그를 읽어 숫자로그와 문자로그로 분류했다.
def reorderLogFiles(self, logs: List[str]) -> List[str]:
alp_logs = []
num_logs = []
for log in logs:
log = log.split()
index = log[0]
judge = ''.join(log[1:])
string = ' '.join(log[1:])
log = [index, string]
if judge.isdigit():
num_logs.append(log)
else:
alp_logs.append(log)
문자로그는 숫자로그보다 앞에 온다하였으므로, alp_logs + num_logs 이지만, 그전에 문자로그를 정렬해야한다.
조건은 문자 순으로 정렬하되, 같을경우 식별자 순이다.
alp_logs.sort(key=lambda x: (x[1], x[0]))
그 다음 문자 로그뒤에 숫자로그 리스트를 붙인 후, 출력 조건에 맞도록 바꾸어준다.
logs = alp_logs + num_logs
for i in range(len(logs)):
logs[i] = ' '.join(logs[i])
return logs
정리하면 다음과 같다.
def reorderLogFiles(self, logs: List[str]) -> List[str]:
alp_logs = []
num_logs = []
answer = []
for log in logs:
log = log.split()
index = log[0]
judge = ''.join(log[1:])
string = ' '.join(log[1:])
log = [index, string]
if judge.isdigit():
num_logs.append(log)
else:
alp_logs.append(log)
alp_logs.sort(key=lambda x: (x[1], x[0]))
logs = alp_logs + num_logs
for i in range(len(logs)):
logs[i] = ' '.join(logs[i])
return logs
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[Q6] 가장 긴 팰린드롬 부분 문자열 (0) | 2022.12.01 |
---|---|
[Q4] 가장 흔한 단어 (0) | 2022.12.01 |
[Q2] 문자열 뒤집기 (0) | 2022.11.30 |
[Q1] 유효한 팰린드롬 (0) | 2022.11.30 |
코딩테스트 연습 기록 (0) | 2022.11.30 |