📖 문제
https://programmers.co.kr/learn/courses/30/lessons/17686
💻 코드
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로 파싱하고 자료구조에 저장한 후, 정렬하여 리턴하는 문제였다. 문제의 요구사항에 맞게 정확한 로직을 짜는 것이 핵심이었다.
'Problem Solving > 📕Programmers' 카테고리의 다른 글
[Programmers] n진수 게임 (Python) (0) | 2021.10.08 |
---|---|
[Programmers] 캐시 (Python) (0) | 2021.10.07 |
[Programmers] 뉴스 클러스터링 (Python) (0) | 2021.10.06 |
[Programmers] 프렌즈4블록 (Python) (0) | 2021.10.04 |
[Programmers] 방금그곡 (Python) (0) | 2021.10.03 |