DevKim

[Python] 2018 카카오 BLIND RECRUITMENT - 방금 그 곡 본문

알고리즘 PS

[Python] 2018 카카오 BLIND RECRUITMENT - 방금 그 곡

on_doing 2021. 2. 24. 18:26
728x90

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

 

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

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

programmers.co.kr

[ 알고리즘 ]

구현

 

[문제 접근]

#을 어떻게 처리하느냐가 이 문제의 핵심이다.

처음엔 #이 뒤에올때, 안 올때를 나눠서 풀까.. 생각했지만, 너무 번거로울 것 같아서 고민하다가

소문자로 변환해서 풀면 쉬울 것 같아서 모조리 소문자로 바꿨다.

문제를 처음에 제목 길이가 긴 순서를 우선순위로 놓고 풀어라 라고 잘못 읽어서 이상한 오류다.. 생각하고 있었다(하^^)

 

조건에 맞게 차례대로 구현해주고,

그냥 차례대로 비교해주면 처음에 sorting할 필요는 없을 것 같고 마지막에 time을 기준으로 sorting 해주면된다.

 

[코드]

def change(s):
    s=s.replace('C#','c')
    s=s.replace('D#','d')
    s=s.replace('F#','f')
    s=s.replace('G#','g')
    s=s.replace('A#','a')
    
    return s
    

def solution(m, musicinfos):
    answer = ''
    result=[]
    
    m=change(m)
        
    for i in range(len(musicinfos)):
        
        start,end,name,melody=musicinfos[i].split(',')
        
        melody=change(melody)
        
        song=''
        s=start.split(':')
        e=end.split(':')
        
        time=(int(e[0])*60+int(e[1]))-(int(s[0])*60+int(s[1]))       
        
        n=len(melody)
        a=time//n
        b=time%n
        song=melody*a+melody[:b]
        
        if m in song:
            result.append([name,time])
    
    
    if len(result)==0:
        answer="(None)"
    else:
        result=sorted(result,key=lambda x:-x[1])
        answer=result[0][0]
        
    return answer
728x90
Comments