코딩테스트

[프로그래머스][KAKAO_BLIND][2018] 방금 그 곡

pythaac 2021. 9. 3. 20:59
프로그래머스 코딩테스트 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

https://programmers.co.kr/learn/courses/30/lessons/17683

 

코딩테스트 연습 - [3차] 방금그곡

방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV,

programmers.co.kr

 

내가 작성한 코드

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로 확인하는 패턴은 함정을 항상 확인해야겠다