(None)
"을 반환한다.입력으로 네오가 기억한 멜로디를 담은 문자열 m과 방송된 곡의 정보를 담고 있는 배열 musicinfos가 주어진다.
조건과 일치하는 음악 제목을 출력한다.
def solution(m, musicinfos):
answer = ''
musicTime = 0
m = getMelody(m)
musicinfos.sort(key=lambda x: x[0])
for music in [x.split(',') for x in musicinfos]:
melody = getMelody(music[3])
timeDiff = getTime(music[1]) - getTime(music[0])
melody = melody * (timeDiff // len(melody)) + melody[:(timeDiff % len(melody))]
# 멜로디가 일치하며, 재생된 시간도 긴 경우
if isMatch(m, melody) and musicTime < timeDiff:
musicTime = timeDiff
answer = music[2]
return answer if musicTime > 0 else "(None)"
def getTime(time):
h, m = map(int, time.split(':'))
return h * 60 + m
def getMelody(musics):
result = []
for music in musics:
if music == '#':
result[-1] += '#'
else:
result.append(music)
return result
def isMatch(me, melody):
a, b = 0, 0
while True:
if b == len(melody) or a == len(me):
break
if me[a] == melody[b]:
a, b = a+1, b+1
else:
if a == 0:
b += 1
else:
a = 0
return a == len(me)