코딩테스트/programmers (python)
Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT
seulll
2024. 5. 22. 15:59
https://school.programmers.co.kr/learn/courses/30/lessons/17683
코드
def solution(m, musicinfos):
m = m.replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a')
answer = []
for music in musicinfos:
s = int(music.split(',')[0].split(':')[0]) * 60 + int(music.split(',')[0].split(':')[1])
e = int(music.split(',')[1].split(':')[0]) * 60 + int(music.split(',')[1].split(':')[1])
toLower = music.split(',')[3].replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a')
song = toLower * ((e-s) // len(toLower) + 1)
if m in song:
answer.append((music.split(',')[2], e-s))
if answer:
answer.sort(reverse = True, key = lambda x: x[1])
return answer[0][0]
return '(None)'
테스트 케이스 30번만 실패하여 다른 코드를 참고하였다.
def solution(m, musicinfos):
answer = ''
result = list()
for i in musicinfos:
info = i.split(',')
time = (int(info[1][:2]) * 60 + int(info[1][3:])) - (int(info[0][:2]) * 60 + int(info[0][3:]))
music = list(info[-1])
i = 1
while (i < len(music)) and ('#' in music):
if (music[i] == '#'):
music[i - 1] = music[i - 1] + music[i]
del music[i]
else:
i += 1
length = len(music)
play = music * (time // length) + music[ : time % length]
m = list(m)
i = 1
while (i < len(m)) and ('#' in m):
if (m[i] == '#'):
m[i - 1] = m[i - 1] + m[i]
del m[i]
else:
i += 1
for i in range(len(play) - len(m) + 1):
if (play[i : i + len(m)] == m):
result.append([info[2], time])
break
if (len(result) > 0):
result.sort(key = lambda x : x[1], reverse = True)
answer = result[0][0]
else:
answer = '(None)'
return answer
참조
https://yonghee.io/peurogeuraemeoseu-17683-banggeumgeugog/
프로그래머스 17683: 방금그곡 (카카오 2018 블라인드 공채 3차) Python 문제풀이
프로그래머스 17683: 방금그곡 (카카오 2018 블라인드 공채 3차) Python 문제풀이
yonghee.io