728x90
https://programmers.co.kr/learn/courses/30/lessons/17683
def solution(m, musicinfos):
answer = ''
answer_playtime = 0
for info in musicinfos:
# 문자열 파싱
s, e, title, melody = info.split(',')
sh, sm = map(int, s.split(':'))
sm_total = sh * 60 + sm
eh, em = map(int, e.split(':'))
em_total = eh * 60 + em
playtime = em_total - sm_total
# "x"인지 "x#"인지 확인하기 위해 m의 각 음계마다 분리(쉼표를 넣어줌)
tmp_m = []
for i in range(len(m)):
if m[i] == "#":
continue
elif i + 1 < len(m) and m[i + 1] == "#":
tmp_m.append(m[i:i + 2])
else:
tmp_m.append(m[i])
tmp_m2 = ''
for i in range(len(tmp_m)):
tmp_m2 += tmp_m[i] + ','
# melody의 각 음계마다 분리(쉼표를 넣어줌)
tmp_melody = []
for i in range(len(melody)):
if melody[i] == "#":
continue
elif i + 1 < len(melody) and melody[i + 1] == "#":
tmp_melody.append(melody[i:i + 2])
else:
tmp_melody.append(melody[i])
# playtime만큼 멜로디 작성
tmp_melody2 = ''
for i in range(playtime):
tmp_melody2 += tmp_melody[i % len(tmp_melody)] + ','
# 쉼표를 포함한 멜로디가 포함되어있을때, 플레이타임이 가장 긴 제목 저장
if tmp_m2 in tmp_melody2:
if answer_playtime < playtime:
answer = title
answer_playtime = playtime
return answer if answer else "(None)"
문자열 파싱 문제이다.
여기서 애를 먹었던 부분은 C와 C#을 구분하는 부분이었는데
어렵게 생각하지 않고 ','를 붙여서 구분했다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 1780 종이의 개수, python (0) | 2021.07.04 |
---|---|
[프로그래머스] 스킬트리, python (0) | 2021.06.26 |
[프로그래머스 ] 압축, 2018 KAKAO BLIND RECRUITMENT[3차], python (0) | 2021.06.26 |
[프로그래머스] 2개 이하로 다른 비트,월간 코드 챌린지 시즌2, python, C (0) | 2021.06.25 |
[프로그래머스] 영어 끝말잇기, Summer/Winter Coding(~2018), python (0) | 2021.06.25 |