본문 바로가기
알고리즘

[알고리즘] 방금그곡

by keel_im 2021. 5. 5.
반응형

포인트

  • 방법에 따라서 접근 방법이 달라질 수 있을 것 같습니다. 저는 시간에 따라서 기존에 갖고 있는 scale note를 이어 붙인 뒤 조건에 맞으면 vc에 넣어서 정렬하여 원하는 값을 출력할 수 있도록 문제를 해결하였습니다. 

🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다. 

python

def other_char(string:str) -> str:
    # 중복되지 않는 스케일로 변환
    return string.replace('C#', 'c').replace('D#', 'd').replace('F#', 'f').replace('G#', 'g').replace('A#', 'a')


def solution(m: str, musicinfos: list) -> str:
    m = other_char(m)
    vc = []
    for info in musicinfos:
        start, end, title, scale = info.split(',')
        time = (int(end[:2]) - int(start[:2])) * 60 + int(end[-2:]) - int(start[-2:])
        # 시간 계산하기

        part_notes = other_char(scale)
        full_notes = part_notes * (time // len(part_notes)) + part_notes[:time % len(part_notes)]
        # 시간에 따른 스케일 노트 만들기

        if m in full_notes:
            # 조건에 있는 것들 전부 배열에 넣어놓기
            vc.append([title, time, len(vc)])

    if vc:
        # 벡터 안에 있으면 정렬해서 제일 처음의 것
        vc.sort(key=lambda x: (-x[1], x[2]))
        return vc[0][0]
    else:
        # 없으면 None 값을 반환
        return '(None)'

 

반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 길 찾기 게임  (0) 2021.05.07
[알고리즘] 불량 사용자  (0) 2021.05.06
[알고리즘] 후보키  (0) 2021.05.05
[알고리즘] 파일명 정렬  (0) 2021.05.04
[알고리즘] N진수 게임  (0) 2021.05.04

댓글