본문 바로가기
IT/알고리즘

[프로그래머스] 방금 그곡 lv2

by 어센트 2020. 9. 3.

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

 

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

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

programmers.co.kr

노트에 순서를 차근차근 적으면서 풀었다. 신경써줘야할게 꽤 있는 문제였다. 처음에 음이 12개라는것만 보고 #처리를 따로 해줘야한다는 것을 빼먹어서 시간이 더 걸린 것 같다. 그리고 이상하게 테스트케이스 3개가 통과가 안됐는데 알고보니 나는 '(None)' 을 반환하는 줄 알고 자꾸 '(None)'을 적고 있었다....

 

이 문제도 파이썬을 풀지 않았다면 머리가 더 복잡했을듯...

 

 

내 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def solution(m,musicinfos):
    playList = []
    target = ["C#","D#","F#","G#","A#"]
    replace = ["Z","Y","X","V","N"]
    for i in range(len(target)):
        m = m.replace(target[i],replace[i])
    def getPlayTime(start,end):
        starthour = int(start[:start.index(":")])
        startmin = int(start[start.index(":")+1:])
        endhour = int(end[:end.index(":")])
        endmin = int(end[end.index(":")+1:])
        starthour*=60
        endhour*=60
        start = starthour+startmin
        end = endhour+endmin
        return end - start
    for s in musicinfos:
        data = s.split(",")
        for i in range(len(target)):
            data[3= data[3].replace(target[i],replace[i])
        temp = ""
        playtime = getPlayTime(data[0],data[1])
        print(playtime)
        if(len(m)<= playtime):
            for i in range(playtime):
                temp+=data[3][i%len(data[3])]
            tempLst = []
            if m in temp:
                tempLst.append(len(temp))
                tempLst.append(int(data[0][:2]+data[0][3:]))
                tempLst.append(data[2])
            if tempLst:
                playList.append(tempLst)
 
    if len(playList) == 0:
        return "(None)"
    playList = sorted(playList,key=lambda x: (-x[0],x[1]))
    return playList[0][2]
cs