본문 바로가기
코딩 테스트/문제 풀기

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

by hazel_ 2021. 3. 31.

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

 

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

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

programmers.co.kr

 

def solution(m, musicinfos):
    musicinfo = []
    answer = []
    count = 0
    for i in range(len(musicinfos)):
        musicinfo.append(list(musicinfos[i].split(',')))

    my_melody = []
    for i in range(len(m)):
        if m[i].isalpha() and i < len(m) - 1 and not m[i + 1].isalpha():
            my_melody.append(m[i:i + 2])
        elif not m[i].isalpha():
            continue
        else:
            my_melody.append(m[i])

    for music in musicinfo:
        whole_music = []
        # 시간 구하기
        hour = int(music[1][0:2]) - int(music[0][0:2])
        minute = int(music[1][3:5]) - int(music[0][3:5])
        time = (hour * 60) + int(minute)

        # 멜로디 구분
        melody = []
        for mu in range(len(music[3])):
            if music[3][mu].isalpha() and mu < len(music[3]) - 1 and not music[3][mu + 1].isalpha():  # C#같은 것일 경우
                melody.append(music[3][mu:mu + 2])
            elif not music[3][mu].isalpha():  # #일 경우
                continue
            else:  # 알파벳으로만 이루어진 음일경우
                melody.append(music[3][mu])

        for t in range(time):
            m_l = t % len(melody)
            whole_music.append(melody[m_l])

        for i in range(len(whole_music) - len(my_melody) + 1):
            if my_melody == whole_music[i:i + len(my_melody)]:
                answer.append((music[2], time, count))
                count += 1

    answer.sort(key=lambda x: (-x[1], x[2]))

    if len(answer) == 0:
        return '(None)'
    else:
        return answer[0][0]

 

시간 잘못계산해서... 거의 3시간동안 푼 문제 ..ㅋㅋㅋㅋㅋㅋㅋㅋㅋ큐ㅠㅠㅠ

댓글