320x100
https://school.programmers.co.kr/learn/courses/30/lessons/17686
리스트를 만드는 건 어렵지 않지만 정렬 방식이 조금 까다로웠다.
정렬할 때 HEAD 기준, HEAD가 같으면 NUMBER 기준으로 정렬하는데 다짜고짜 HEAD -> NUMBER 순으로 정렬하면 HEAD로 정렬한 정보가 사라지고, 역순으로 해도 대부분 케이스에서 실패한다.
그런데 파이썬에서 sorted 함수를 쓸 때, key를 지정할 때 (key1, key2) 이런 식으로 key1으로 우선 정렬하고, 정렬을 유지하면서 key2로 정렬이 가능하더라. 지식이 늘었다.
- sorted(LIST, key = lambda x : (x[1], x[2]))
def solution(files):
answer = []
new_files = [] # 내부의 각 파일에 ['원본', HEAD, NUMBER]로 구분하여 저장. TAIL은 사용되지 않으니 버림
# new_files 리스트 만들기
for file in files:
origin = file
HEAD, NUMBER = '', ''
# HEAD
for alpha in file:
if alpha.isdigit():
break
else:
HEAD += alpha
# file 자르기
file = file[len(HEAD):]
# NUMBER
idx = 0
for alpha in file:
if idx < 5 and alpha.isdigit():
NUMBER += alpha
idx += 1
else:
break
new_files.append([origin, HEAD.lower(), int(NUMBER)]) # 대소문자 구분 X, lstrip('0')으로 앞의 0 제거
# HEAD 먼저, 다음 NUMBER 기준 정렬
SORTED = sorted(new_files, key = lambda x : (x[1], x[2]))
for name in SORTED:
answer.append(name[0])
return answer
'코딩테스트' 카테고리의 다른 글
[파이썬] 기능개발 - 스택/큐 [CODING TEST #45] (0) | 2022.08.07 |
---|---|
[파이썬] 문자열 내 p와 y의 개수 [CODING TEST #44] (0) | 2022.08.07 |
[파이썬] 괄호 회전하기 - 월간 코드 챌린지 시즌2 [CODING TEST #42] (0) | 2022.08.06 |
[파이썬] 방금그곡 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #41] (0) | 2022.08.04 |
[파이썬] 가운데 글자 가져오기 [CODING TEST #40] (0) | 2022.08.04 |
댓글