[프로그래머스] 파일명 정렬

박형진·2021년 11월 21일
1

https://programmers.co.kr/learn/courses/30/lessons/17686


1. 전체 코드

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"]))

2. 후기

  1. 처음 NUMBER를 구성할 때 lstrip('0')을 써서 0을 제거했는데, 여기서 런타임에러가 발생했다. NUMBER가 000, 0000 처럼 0으로만 구성된 경우 모든 0이 제거되어 빈 문자열만 남을 수 있기 때문에 런타임에러가 발생한다. int()를 쓰면 해결된다.

  2. file = ["img0000123aa", "img00000.345", "img001a00png", "img2", "IMG02"]를 통과하면 아마 큰 문제없이 통과할 수 있을것이다.

profile
안녕하세요!

0개의 댓글