https://programmers.co.kr/learn/courses/30/lessons/17683
내가 짠 알고리즘은 다음과 같다.
1. #들어가 있는 음은 변환
2. 라디오에서의 play_time 계산
3. play_time과 실제 음악 시간과 비교해서 실제 재생된 음악 값으로 변경
4. 네오가 기억하는 멜로디가 실제 재생 된 음악에 있다면
5. 후보군에 이름, 재생된 시간, 입력된 순서 저장
6. 재생된 시간과, 입력된 순서 기준으로 정렬
7. 가장 먼저 정렬된 이름을 반환 (후보군에 없을 시 '(None)' 반환
def solution(m, musicinfos):
candidate =[]
notes ={'C#':'H','D#':'I','F#':'J','G#':'K','A#':'L'}
for note,new in notes.items():
m = m.replace(note,new)
for i,musicinfo in enumerate(musicinfos):
start,end,name,music = musicinfo.split(',')
for note, new in notes.items():
music = music.replace(note,new)
start, end = list(map(int,start.split(':'))),list(map(int,end.split(':')))
play_time = (end[0]-start[0])*60 + end[1]-start[1]
if play_time < len(music):
music = music[:play_time]
else:
music = music*(play_time//len(music)) + music[:(play_time%len(music))]
if m in music:
candidate.append([name,play_time,i])
candidate.sort(key=lambda x: (-x[1],x[0]))
if candidate:
return candidate[0][0]
else:
return "(None)"
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 압축 (Python) (0) | 2021.11.06 |
---|---|
[프로그래머스] 가장 큰 정사각형 찾기 (Python) (0) | 2021.11.06 |
[프로그래머스] 방문 길이 (Python) (0) | 2021.11.04 |
[프로그래머스] 쿼드 압축 후 개수 세기 (Python) (0) | 2021.11.04 |
[프로그래머스] n^2 배열 자르기 (Python) (0) | 2021.11.04 |
댓글