프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
문제
https://programmers.co.kr/learn/courses/30/lessons/17683
내가 작성한 코드
import re
def get_time(_from, _to):
_from_h, _from_m = map(int, _from.split(":"))
_to_h, _to_m = map(int, _to.split(":"))
return (_to_h * 60 + _to_m) - (_from_h * 60 + _from_m)
def full_melody(time, music):
n = len(music)
d, m = divmod(time, n)
return music * d + music[:m]
def split_melody(melody):
res = []
for c in melody:
if c == '#':
res[-1] += '#'
else:
res.append(c)
return res
def solution(m, musicinfos):
answer = "(None)"
long = 0
for music in musicinfos:
_from, _to, title, melody = music.split(",")
time = get_time(_from, _to)
melody = split_melody(melody)
full = ''.join(full_melody(time, melody))
# print(full)
if re.search(f"({m}\w|{m}$)",full) and long < time:
long = time
answer = title
return answer
- regex
- C, C# 모두 하나의 음정으로 멜로디 카운팅할 때 주의
- m 그대로 매칭을 확인하면 #을 확인할 수 없다
- m + \w 또는 m이 마지막으로 오는 패턴으로 확인
다른 사람이 작성한 코드
None
기억해야할 것
- 시간 관련된 문제는 대부분 초로 바꿔서 다루는게 좋은 듯 하다
- regex로 확인하는 패턴은 함정을 항상 확인해야겠다
'코딩테스트' 카테고리의 다른 글
[프로그래머스][KAKAO_BLIND][2018] N진수 게임 (0) | 2021.09.03 |
---|---|
[프로그래머스][KAKAO_BLIND][2018] 압축 (0) | 2021.09.03 |
[프로그래머스][KAKAO_BLIND][2019] 블록 게임 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2019] 매칭 점수 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2019] 길 찾기 게임 (0) | 2021.09.02 |