반응형
programmers.co.kr/learn/courses/30/lessons/17683
코딩테스트 연습 - [3차] 방금그곡
방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV,
programmers.co.kr
import re
def solution(m, musicinfos):
answer = []
musicinfos, newInfos = [re.split('[:,]', info) for info in musicinfos], [] # 데이터 처리
for info in musicinfos: # 데이터 처리
start_time = int(info[0]) * 60 + int(info[1]) # 재생 시작 시간을 분으로 변환
play_time = int(info[2]) * 60 + int(info[3]) - start_time # 총 재생 시간 : 조건에 필요
song_name = info[4] # 노래 제목
song = [i if len(i) == 2 else i + '-' for i in re.findall(r'\w#?', info[5])] # 멜로디 형식 변환
total_song = ''.join(song * (play_time // len(song)) + song[:play_time % len(song)]) # 실제 재생된 멜로디
newInfos.append([start_time, -play_time, song_name, total_song]) # -playtime은 추후 정렬을 위한것
m = ''.join([i if len(i) == 2 else i + '-' for i in re.findall(r'\w#?', m)]) # 멜로디 형식 변환
answer = sorted([info for info in newInfos if m in info[3]], key=lambda x : (x[1], x[0]))
# 재생 시간이 긴 순서대로 우선 정렬, 같으면 재생 시작 시간순으로 정렬
return '(None)' if answer == [] else answer[0][2]
→ 문제 자체는 쉽지만 조건에 알맞게 작동하도록 데이터를 잘 처리해야 함.
1. 멜로디가 정음으로 끝날때 주의할 것. ex. 'CCC' 일때 'CCC#' 안에 'CCC'가 있지만 다른 멜로디.
따라서 찾고자 하는 멜로디와 노래의 멜로디 모두 단독 문자는 '-'를 붙여 주었다.
반응형