[PS] 방금그곡

owo·2023년 2월 4일
0

PS

목록 보기
15/25

문제 링크

코드

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]

리뷰

  • #을 생각하다 보니 자연스럽게 정규식이 먼저 생각났다. 단순히 #이 붙은 문자들을 다른 문자로 치환하면 된다는 사실을 생각해내지 못했다.
  • 정렬 순서도 오름차순이면 -를 붙혀야되는데 실수를 찾아내지 못했다.

0개의 댓글