[2018 카카오 블라인드] [3차] 파일명 정렬

5365 단어 카카오카카오

문제 링크

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

문제 설명

문제 접근 방법
1. file 값을 HEAD, NUMBER, TAIL 부분으로 파싱한다.
-> 숫자 부분을 기준으로 HEAD, NUMBER, TAIL 부분을 나눈다. 숫자를 판별하기 위해서 isdigit() 함수를 사용하였다.
2. HEAD(단, 대소문자 구분 X), NUMBER(단, 0000이나 0101 등 문자형 숫자도 가능) 순서대로 정렬한다.
-> key=lambda x: (x[0].upper(), int(x[1])) 방법으로 python의 sort 함수를 사용하여 구현하였다.

풀이 코드

def solution(files):
    answer = []
    for file in files:
        head, number, tail = '', '', ''
        head_complete = False
        num_idx = 0
        for idx, c in enumerate(file):
            if c.isdigit() and not head_complete:
                head = file[:idx]
                number = file[idx:]
                head_complete = True
                num_idx = idx
            elif not c.isdigit() and head_complete:            
                number = file[num_idx:idx]
                tail = file[idx:]
                break            
        answer.append([head, number, tail])
    answer.sort(key=lambda x: (x[0].upper(), int(x[1])))
    return [''.join(a) for a in answer]

좋은 웹페이지 즐겨찾기