[Programmers] 파일명 정렬

김가영·2021년 2월 14일
0

Algorithm

목록 보기
52/78

문제 바로가기

파일명을 HEAD 알파벳 순(대문자, 소문자 구분 없이), number 숫자 순으로 정렬하는 것.

def solution(files):
    def parse(file):
        i = 0
        while i < len(file) and file[i] not in '0123456789':
            i+=1
        head = file[:i]
        j = i
        while i < len(file) and file[i] in '0123456789':
            i+=1
        num = file[j:i]
        tail = file.split('.')[1] if len(file.split('.')) > 1 else ''
        return (head.lower(), int(num), tail)
    
    datas = {file: parse(file) for file in files}
    files.sort(key = lambda x: (datas[x][0], datas[x][1]))
            
    return files

열심히 head, num, tail 을 분리하는 parse 함수를 짰다.

import re

def solution(files):
    a = sorted(files, key=lambda file : int(re.findall('\d+', file)[0]))
    b = sorted(a, key=lambda file : re.split('\d+', file.lower())[0])
    return b

아 re 모듈을 좀 더 공부해야겠다...
여기에서 \d+ 는 숫자가 하나 이상...

profile
개발블로그

0개의 댓글