알고리즘 문제 풀이/Programmers
[22회차] 파일명 정렬
중앙백
2022. 1. 11. 14:20
Programmers Level.2 파일명 정렬
def solution(files):
word_list = [['',0,''] for _ in range(len(files))] # HEAD, NUMBER, ORIGINAL WORD로 나누어 저장
for num, file in enumerate(files):
head = -1
number = len(file)
for a, b in enumerate(file):
if b.isdigit() and head == -1:
head = a
if head != -1 and not b.isdigit() and number == len(file):
number = a
word_list[num] = [file[:head].upper(), int(file[head:number]), file]
word_list = sorted(word_list, key = lambda x : (x[0], x[1])) # HEAD, NUMBER 우선순위로 정렬
answer = []
for i in word_list:
answer.append(i[2]) # 정렬된 순서대로 ORIGINAL WORD를 출력
return answer
- 문자열을 HEAD, NUMBER, ORIGINAL WORD로 분리시켜 word_list에 저장한다.
- 그 후 HEAD, NUMBER 순으로 정렬한다. (다중조건으로 정렬)
- HEAD는 대소문자 구분을 하지 않기 때문에 upper() 후에 정렬.
- NUMBER는 int형으로 바꿔준 후 정렬