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

728x90
반응형

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

 

코딩테스트 연습 - [3차] 파일명 정렬

파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램

programmers.co.kr

2018 카카오 블라인드 코딩테스트에 출제된 문제이다.

 

# 문제가 복잡해보이고 정렬해야 할 것도 많아보이지만, head와 number만 잘 파싱해서

   추출한 다음 정렬하면 되는 문제이다.

 

# 카카오는 re모듈을 이용해 문자열을 파싱하는 문제가 많이 나오는 것 같다.

import re
def solution(files):
    answer = []
    file = []
    for idx, i in enumerate(files):
        # findall함수를 사용해 파일명 중 숫자부분을 추출한다.
        number = re.findall("\d+", i)
        # 숫자의 첫글자가 나오기 전까지는 HEAD부분이므로 head에 HEAD부분을 소문자로 변경하여 넣는다.
        head = i[:i.index(number[0])].lower()
        # file배열에 [head, number, idx]를 append해준다. (idx는 현재 파일명의 인덱스)
        file.append([head, int(number[0]), idx])
    
    # file을 head순으로 먼저 정렬하고 같으면 number순으로 정렬한다. (이미 입력받은 순서는 유지중)
    file.sort(key = lambda x: (x[0], x[1]))
    # files의 정렬된 인덱스에 해당하는 파일명을 answer에 넣고 출력한다.
    for i in file:
        answer.append(files[i[2]])
    return answer

(프로그래머스 level: 2)

728x90
반응형
TAGS.

Comments