문제 링크
코드
def solution(m, musicinfos):
musics = []
for music in musicinfos:
start, end, title, content = music.split(",")
time = duration(start, end)
musics.append((title, full(mapping(content), time)))
musics.sort(key = lambda x: -len(x[1]))
m = mapping(m)
for music in musics:
if m in music[1]:
return music[0]
return "(None)"
def duration(start, end):
s_h, s_s = map(int, start.split(":"))
e_h, e_s = map(int, end.split(":"))
return (e_h - s_h) * 60 + (e_s - s_s)
def mapping(content):
mapped = {
"C#": "c",
"D#": "d",
"F#": "f",
"G#": "g",
"A#": "a"
}
for m in mapped:
content = content.replace(m, mapped[m])
return content
def full(content, time):
l = len(content)
return content * (time // l) + content[:time % l]
리뷰
- #을 생각하다 보니 자연스럽게 정규식이 먼저 생각났다. 단순히 #이 붙은 문자들을 다른 문자로 치환하면 된다는 사실을 생각해내지 못했다.
- 정렬 순서도 오름차순이면 -를 붙혀야되는데 실수를 찾아내지 못했다.