def solution(files):
answer = []
result = []
for i, file in enumerate(files):
div = [0, 0, 0, i] # [HEAD, NUMBER, TAIL, ORDER]
for idx, j in enumerate(list(file)):
if j.isdigit(): # NUMBER 의 시작점
div[0] = file[:idx].lower()
number_start = idx
temp = file[number_start:]
number = []
tail = []
flag = False
for k in temp:
if not flag and k.isdigit() and len(number) < 5:
number.append(k)
else:
flag = True
tail.append(k)
div[1] = int(''.join(number))
div[2] = ''.join(tail)
result.append(div)
break
result = sorted(result, key=lambda x: (x[0], x[1], x[3]))
for i in result:
answer.append(files[i[3]])
return answer
print(solution(["img0000123aa", "img00000.345", "img001a00png", "img2", "IMG02"]))
처음 NUMBER를 구성할 때 lstrip('0')
을 써서 0을 제거했는데, 여기서 런타임에러가 발생했다. NUMBER가 000
, 0000
처럼 0으로만 구성된 경우 모든 0이 제거되어 빈 문자열만 남을 수 있기 때문에 런타임에러가 발생한다. int()
를 쓰면 해결된다.
file = ["img0000123aa", "img00000.345", "img001a00png", "img2", "IMG02"]
를 통과하면 아마 큰 문제없이 통과할 수 있을것이다.