안녕하세요 :)
취준으로 바쁜 요즘.... 오랜만에 코테 연습 글을 올리네요 ^^;
https://programmers.co.kr/learn/courses/30/lessons/17683
이 문제는 단순한 구현문제였습니다.
'#' 처리를 어떻게 하느냐가 관건인것같습니다.
저는 조건 m과 현재 비교할 music에서 만약 C# 이라면 !C#으로 변경해주어서 같은지 비교하도록 구현했습니다.
from datetime import datetime
def solution(m, musicinfos):
answer = ''
new_m = ''
i = 0
max_play_time = -1
while i < len(m):
if i + 1 < len(m):
if m[i+1] == '#':
new_m += '!' + m[i:i+2]
i += 2
else:
new_m += m[i]
i += 1
else:
new_m += m[i]
break
for music in musicinfos:
music = music.split(',')
start = datetime(2021, 4, 20, int(music[0][:2]), int(music[0][-2:]))
end = datetime(2021, 4, 20, int(music[1][:2]), int(music[1][-2:]))
play_time = (end - start).seconds // 60
play_music = ''
melody = []
i = 0
while i < len(music[3]):
if i + 1 < len(music[3]):
if music[3][i] != '#' and music[3][i + 1] == '#':
melody.append('!'+music[3][i:i + 2])
i += 2
else:
melody.append(music[3][i])
i += 1
else:
melody.append(music[3][i])
break
for minute in range(play_time):
play_music += melody[minute % len(melody)]
if new_m in play_music:
if max_play_time == -1 or max_play_time < play_time:
max_play_time = play_time
answer = music[2]
return answer if answer else "(None)"