알고리즘 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