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형으로 바꿔준 후 정렬
'알고리즘 문제 풀이 > Programmers' 카테고리의 다른 글
| [24회차] 주차 요금 계산 (0) | 2022.01.16 |
|---|---|
| [23회차] n^2 배열 자르기 (0) | 2022.01.13 |
| [21회차] 프렌즈 4블록 (0) | 2022.01.04 |
| [20회차] 영어 끝말잇기 (0) | 2021.12.31 |
| [19회차] 후보키, 2개 이하로 다른 비트 (0) | 2021.12.29 |
댓글