프로그래머스, [3차] 파일명 정렬, 17686

2024. 9. 3. 01:01ETC/Algorithm

[유형]

정렬

 

[문제링크]

https://school.programmers.co.kr/learn/courses/30/lessons/17686?language=python3

 

[요약]

파일명을 세 부분으로 나눈 후, 파일명을 정렬한다.

파일명은 우선 HEAD 부분을 기준으로 사전 순으로 정렬한다. 이때, 문자열 비교 시 대소문자 구분을 하지 않는다. MUZI와 muzi, MuZi는 정렬 시에 같은 순서로 취급된다.

파일명의 HEAD 부분이 대소문자 차이 외에는 같을 경우, NUMBER의 숫자 순으로 정렬한다. 9 < 10 < 0011 < 012 < 13 < 014 순으로 정렬된다. 숫자 앞의 0은 무시되며, 012와 12는 정렬 시에 같은 같은 값으로 처리된다.

파일의 HEAD 부분과, NUMBER 숫자도 같을 경우, 원래 입력에 주어진 순서를 유지한다. MUZI01.zip muzi1.png 입력으로 들어오면, 정렬 후에도 입력 주어진 파일의 순서가 바뀌어서는 된다.

 

[문제풀이]

정규식을 활용한다.

import re
def solution(files):
    temp = [re.split(r"([0-9]+)",s) for s in files]
    
    temp.sort(key = lambda x: (x[0].lower(),int(x[1])))
    
    return [''.join(t) for t in temp]

'ETC > Algorithm' 카테고리의 다른 글

백준, 듣보잡, 1764  (0) 2024.09.04
백준, 수 찾기, 1920  (0) 2024.09.04
백준, 좌표 정렬하기2, 11651  (0) 2024.09.03
백준, 나이순 정렬, 10814  (0) 2024.09.03
백준, 스타트와 링크, 14889  (2) 2024.08.30