programmers.co.kr/learn/courses/30/lessons/17683
def solution(m, musicinfos):
musicinfo = []
answer = []
count = 0
for i in range(len(musicinfos)):
musicinfo.append(list(musicinfos[i].split(',')))
my_melody = []
for i in range(len(m)):
if m[i].isalpha() and i < len(m) - 1 and not m[i + 1].isalpha():
my_melody.append(m[i:i + 2])
elif not m[i].isalpha():
continue
else:
my_melody.append(m[i])
for music in musicinfo:
whole_music = []
# 시간 구하기
hour = int(music[1][0:2]) - int(music[0][0:2])
minute = int(music[1][3:5]) - int(music[0][3:5])
time = (hour * 60) + int(minute)
# 멜로디 구분
melody = []
for mu in range(len(music[3])):
if music[3][mu].isalpha() and mu < len(music[3]) - 1 and not music[3][mu + 1].isalpha(): # C#같은 것일 경우
melody.append(music[3][mu:mu + 2])
elif not music[3][mu].isalpha(): # #일 경우
continue
else: # 알파벳으로만 이루어진 음일경우
melody.append(music[3][mu])
for t in range(time):
m_l = t % len(melody)
whole_music.append(melody[m_l])
for i in range(len(whole_music) - len(my_melody) + 1):
if my_melody == whole_music[i:i + len(my_melody)]:
answer.append((music[2], time, count))
count += 1
answer.sort(key=lambda x: (-x[1], x[2]))
if len(answer) == 0:
return '(None)'
else:
return answer[0][0]
시간 잘못계산해서... 거의 3시간동안 푼 문제 ..ㅋㅋㅋㅋㅋㅋㅋㅋㅋ큐ㅠㅠㅠ
'코딩 테스트 > 문제 풀기' 카테고리의 다른 글
[프로그래머스] 파일명 정렬 (0) | 2021.04.02 |
---|---|
[프로그래머스] 압축 (0) | 2021.04.02 |
[프로그래머스] 후보키 (0) | 2021.03.30 |
[프로그래머스] 오픈채팅방 (0) | 2021.03.30 |
[프로그래머스] 프렌즈4블록 (0) | 2021.03.30 |
댓글