본문 바로가기

알고리즘

*프로그래머스)[3]차 방금그곡

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

import math

def sharp(m):
    m = m.replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a')
    return m
def solution(m, musicinfos):
    answer = ''
    max_time = 0
    m = sharp(m)
    
    for info in musicinfos:
        # print(info)
        start,end,head,melody = info.split(',')
        end = end.split(':')
        start = start.split(':')
        play_time = ((int(end[0]) * 60) + int(end[1])) - ((int(start[0]) * 60) +int( start[1]))
        melody = sharp(melody)
        
        
        leng = math.ceil(play_time / len(melody))
        melody = (melody * leng)[:play_time]
        
        if m in melody and max_time < play_time:
            max_time = play_time
            answer = head
        
    if answer == '':
        return '(None)'
    return answer

 

이 문제는 문제 자체를 이해하지 못했다.

때문에 해답을 찾아보았다.

우선 코드 중에 #이 포함된 코드는 모두 소문자로 변환했다.

그리고 for문을 돌며 musicioninfos에 있는 코드에서도 샵은 모두 소문자로 변경하고 

시작시간과 종료시간을 이용해 플레이 시간을 구했고, 이 플레이 시간을 이용해 총 코드를 구했다.