https://programmers.co.kr/learn/courses/30/lessons/17686
문제 접근 방법
1. file 값을 HEAD, NUMBER, TAIL 부분으로 파싱한다.
-> 숫자 부분을 기준으로 HEAD, NUMBER, TAIL 부분을 나눈다. 숫자를 판별하기 위해서 isdigit() 함수를 사용하였다.
2. HEAD(단, 대소문자 구분 X), NUMBER(단, 0000이나 0101 등 문자형 숫자도 가능) 순서대로 정렬한다.
-> key=lambda x: (x[0].upper(), int(x[1])) 방법으로 python의 sort 함수를 사용하여 구현하였다.
def solution(files):
answer = []
for file in files:
head, number, tail = '', '', ''
head_complete = False
num_idx = 0
for idx, c in enumerate(file):
if c.isdigit() and not head_complete:
head = file[:idx]
number = file[idx:]
head_complete = True
num_idx = idx
elif not c.isdigit() and head_complete:
number = file[num_idx:idx]
tail = file[idx:]
break
answer.append([head, number, tail])
answer.sort(key=lambda x: (x[0].upper(), int(x[1])))
return [''.join(a) for a in answer]