📖  문제

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

 

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

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

programmers.co.kr

 

💻  코드

from collections import defaultdict


def parse(s):
    for i, c in enumerate(s):
        if c.isdigit():
            head, rest = s[:i], s[i:]
            break
    number, tail = "", ""
    for i, c in enumerate(rest):
        if i > 4 or not (c.isdigit()):
            number, tail = rest[:i], rest[i:]
            break
    if len(number) == 0:
        number = rest
    return head, number, tail


def solution(files):
    d = defaultdict(list)
    # 문자열 파싱 후 저장
    for fn in files:
        head, number, tail = parse(fn)
        d[head.lower()].append((head, int(number), tail, fn))
        
    answer = []
    # HEAD 기준 정렬
    for item in sorted(d.items()):
        # NUMBER 기준 정렬
        sorted_item = sorted(item[1], key=lambda x: x[1])
        answer.extend([v[3] for v in sorted_item])
    return answer

 

🙌  한마디

구현(Implementation) 문제. 파일명을 HEAD, NUMBER, TAIL로 파싱하고 자료구조에 저장한 후, 정렬하여 리턴하는 문제였다. 문제의 요구사항에 맞게 정확한 로직을 짜는 것이 핵심이었다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기