본문 바로가기
프로그래머스/2단계

(Python/LV2) 파일명 정렬

by windy7271 2022. 10. 1.
728x90
반응형

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/17686

풀이:

def solution(files):
    tmp = []
    head, number, tail = '', '', ''
    for file in files:
        for i in range(len(file)):
            if file[i].isdigit():     # 숫자가 나오면 그 이전은 무조건 HEAD, 이후는 NUMBER, TAIL로 다시 구분
                head = file[:i]
                number = file[i:]

                for j in range(len(number)):    # NUMBER와 TAIL 구분 (숫자 안나오면 TAIL)
                    if not number[j].isdigit():
                        tail = number[j:]
                        number = number[:j]
                        break
                tmp.append([head, number, tail])
                head, number, tail = '', '', ''
                break
    return   [ ''.join(i) for i in (sorted(tmp, key=lambda x:(x[0].lower(), int(x[1]))))]

print(solution(["img12.png", "img10.png", "img02.png", "img1.png", "IMG01.GIF", "img2.JPG"]))

반응형

댓글