- 문제 링크: programmers.co.kr/learn/courses/30/lessons/17683
스킬 체크 테스트 Lv2 문제입니다. 2018 카카오 블라인드 채용 코딩테스트 문제였다고도 하는군요
들었던 노래의 음 시퀀스가 나오고 (ex. "A#BC#B"), 라디오에서 틀었던 음악의 목록을 보기로 주어줍니다.
이때 라디오에서 한 노래를 반복해서 틀 수 있다는 점을 염두하고, 해당되는 곡이 많으면 길이가 가장 길고 가장 앞선것, 없다면 (None)을 반환하면 되는 문제입니다
def solution(m, musicinfos):
note_map = {
"C#": "H",
"D#": "I",
"F#": "J",
"G#": "K",
"A#": "L",
}
for _from, _to in note_map.items():
m = m.replace(_from, _to)
max_played, answer = 0, "(None)"
for music_info in musicinfos:
start, end, name, notes = music_info.split(",")
for _from, _to in note_map.items():
notes = notes.replace(_from, _to)
music_len = len(notes)
start_hour, start_min = start.split(":")
end_hour, end_min = end.split(":")
played_min = (int(end_hour) - int(start_hour)) * 60 + int(end_min) - int(start_min)
really_played_notes = notes * (played_min // music_len)
diff = played_min % music_len
really_played_notes += notes[:diff]
if m in really_played_notes and played_min > max_played:
max_played = played_min
answer = name
return answer
일단 # 처리를 좀 해줘야 합니다. 파이썬이니까 간단히 replace를 해줍니다. 다른 노트와 겹치지 않게 대충 캐릭터를 할당해주시면 됩니다
그럼 매우 편리해집니다. 나머지는 뭐 쉬우니.. 코드로 확인해주세요
반응형
'Online Judge > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python] 기능개발 (0) | 2021.03.30 |
---|---|
[프로그래머스][C++] 2020 KAKAO: 가사 검색 (0) | 2020.08.25 |
[프로그래머스][C++] 이상한 문자 만들기 (0) | 2020.06.27 |
[프로그래머스][C++] 2020 KAKAO: 자물쇠와 열쇠 (0) | 2020.04.30 |