풀이
우선, musicinfos를 보면서 시작시간, 끝 시간, 음악 정보를 split(", ")을 통해서 나누고 미리 만든 change_rhythm을 사용해서 #이 붙은 코드들을 전부 한 글자의 코드로 바꾸어 주었습니다.
그다음, 음악 정보에서 한 코드는 1분이므로 만약, 라디오에서의 재생시간보다 음악 정보의 재생시간이 길다면 라디오의 재생시간에 맞게 음악 정보를 줄여주었습니다.
반대로 음악정보의 재생시간보다 라디오의 재생시간이 길다면 음악 정보의 코드를 라디오의 재생시간에 맞게 늘려주었고 같다면 그대로 유지시켰습니다.
다음으로,
- 조건이 일치하는 음악이 여러 개일 때에는 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. 재생된 시간도 같을 경우 먼저 입력된 음악 제목을 반환한다.
라는 조건이 있으므로 이를 처리하게하여 해결했습니다.
코드
def solution(m, musicinfos):
answer = '(None)'
max_play_time = 0
change_rhythm = {"C#": "c", "D#": "d", "F#": "f", "G#": "g", "A#": "a"}
for rhythm in change_rhythm:
m = m.replace(rhythm, change_rhythm[rhythm])
for musicinfo in musicinfos:
info = musicinfo.split(",")
st_time = int(info[0][:2]) * 60 + int(info[0][3:])
en_time = int(info[1][:2]) * 60 + int(info[1][3:])
play_time = en_time - st_time
music_m = info[3]
for rhythm in change_rhythm:
music_m = music_m.replace(rhythm, change_rhythm[rhythm])
full_m = ""
if len(music_m) > play_time:
full_m = music_m[:play_time]
else:
full_m = music_m
for i in range(len(music_m), play_time):
full_m += music_m[i % len(music_m)]
if m in full_m:
if answer != "(None)":
if max_play_time < play_time:
max_play_time = play_time
answer = info[2]
else:
max_play_time = play_time
answer = info[2]
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 파일명 정렬 (0) | 2021.04.25 |
---|---|
[Python] 프로그래머스 압축 (0) | 2021.04.25 |
[Python] 프로그래머스 후보키 (0) | 2021.04.17 |
[Python] 프로그래머스 오픈채팅방 (0) | 2021.04.11 |
[Python] 프로그래머스 캐시 (0) | 2021.04.10 |