본문 바로가기
Programming/Programmers

[프로그래머스] 방금 그곡 (Python)

by 데이터현 2021. 11. 4.

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

 

코딩테스트 연습 - [3차] 방금그곡

방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV,

programmers.co.kr

내가 짠 알고리즘은 다음과 같다.

 

1. #들어가 있는 음은 변환

2. 라디오에서의 play_time 계산

3. play_time과 실제 음악 시간과 비교해서 실제 재생된 음악 값으로 변경
4. 네오가 기억하는 멜로디실제 재생 된 음악에 있다면

5. 후보군에 이름, 재생된 시간, 입력된 순서 저장

6. 재생된 시간과, 입력된 순서 기준으로 정렬

7. 가장 먼저 정렬된 이름을 반환 (후보군에 없을 시 '(None)' 반환

 

def solution(m, musicinfos):
    candidate =[]
    notes ={'C#':'H','D#':'I','F#':'J','G#':'K','A#':'L'}
    for note,new in notes.items():
        m = m.replace(note,new)
    for i,musicinfo in enumerate(musicinfos):
        start,end,name,music = musicinfo.split(',')
        for note, new in notes.items():
            music = music.replace(note,new)
        start, end = list(map(int,start.split(':'))),list(map(int,end.split(':')))
        play_time = (end[0]-start[0])*60 + end[1]-start[1]
        if play_time < len(music):
            music = music[:play_time]
        else:
            music = music*(play_time//len(music)) + music[:(play_time%len(music))]
        if m in music:
            candidate.append([name,play_time,i])
    candidate.sort(key=lambda x: (-x[1],x[0]))
    if candidate:
        return candidate[0][0]
    else:
        return "(None)"

 

댓글