반응형
나의 풀이
import re
def poundSign(m):
m = re.sub(r'\w#', lambda x : x.group(0).lower()[0], m)
return m
def solution(m, musicinfos):
ans ="(None)"
ansT = -1
ans_dict = {}
m = poundSign(m)
for song in musicinfos:
splt = re.split('[,:]', song)
playingT = (int(splt[2]) - int(splt[0]))*60 + int(splt[3]) - int(splt[1])
splt[5] = poundSign(splt[5])
played = splt[5] * (playingT // len(splt[5])) + splt[5][:playingT % len(splt[5])]
for i in range(len(played) - len(m)+1):
if(m == played[i:i+len(m)]) :
if ansT == -1 or ansT < playingT:
ans = splt[4]
ansT = playingT
break
return ans
음 처음에는 dictionary에 조건을 만족하는 노래 - 재생 시간을 담아 정렬 후 출력하였다.
근데 시간이 큰 겅우에 갱신하도록 수정하였다.
dictionay 로 풀이
더보기
import re
def poundSign(m):
m = re.sub(r'\w#', lambda x : x.group(0).lower()[0], m)
return m
def solution(m, musicinfos):
#....
for i in range(len(played) - len(m)+1):
if(m == played[i:i+len(m)]) :
ans_dict[splt[4]] = playingT
break
if(len(ans_dict) == 1) : answer = [*ans_dict][0]
elif(len(ans_dict) > 1) :
res = sorted(ans_dict.items(), key = (lambda x: x[1]), reverse=True)
answer = [*res][0][0]
return answer
참고
22 ~ 24, 29번이 계속 틀렸는데 None 인경우
"(None)" 단어가 틀렸었다...
20, 27,28번은 조건들을 만족하는 곡이 여러개인 경우 가장 긴 곡을 선택하는 부분이 없으면 틀린다.
728x90
반응형
'개발 > Algorithm 문제 풀이' 카테고리의 다른 글
[Python] 비트마스킹 - 1094 막대기 (0) | 2020.08.28 |
---|---|
[Python] 카카오 2019 - 블록 게임 (0) | 2020.08.19 |
[Python] Dictionary 정렬 (0) | 2020.08.19 |
[Python] 카카오 2018 - 비밀 지도 (0) | 2020.08.18 |
[Python] 카카오 2019 채용 - 후보키 (0) | 2020.08.18 |