[Programmers] Level 2. 방금 그 곡

2022. 11. 29. 16:14·코딩테스트/Python
728x90
반응형

🔗 Problem Link

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


❔Thinking

  • 기억하는 악보를 포함하는 곡의 이름을 반환한다.
  • 1분당 1개의 음이 재생시간 동안 재생되며, 악보는 처음부터 반복 재생된다.
  • 해당하는 곡이 여러개일 경우, 재생시간이 길고 먼저 입력된 곡의 이름을 반환한다.

💻Solution

def solution(m, musicinfos):
    answer = []
    melodies = {}
    # 각 음악 별 악보 구하기 (재생 시간)
    for music in musicinfos:
        s, e, title, melody = music.split(',')
        melody = melody.replace('C#', 'c').replace('D#', 'd').replace('F#', 'f')
        melody = melody.replace('G#', 'g').replace('A#', 'a')
        music_length = len(melody)
        s, e = list(map(int, s.split(':'))), list(map(int, e.split(':')))
        runtime = (e[0]-1-s[0]) * 60 + (60+e[1])-s[1]
        total_melody = runtime // music_length * melody + melody[:runtime % music_length+1]
        melodies[title] = [runtime, total_melody]
    # 기억하는 악보에 해당하는 음악 확인하기
    m = m.replace('C#', 'c').replace('D#', 'd').replace('F#', 'f')
    m = m.replace('G#', 'g').replace('A#', 'a')
    for t, info in melodies.items():
        runtime, melody = info
        if m in melody:
            answer.append([t, runtime, melody])
    answer = sorted(answer, key=lambda x: x[1], reverse=True)
    print(answer)
    return answer[0][0] if answer else "(None)"

🗝️keypoint

  1. C#, D# 등은 하나의 음이므로, 하나의 문자로 치환해야 조건에 맞게 문제를 해결할 수 있다.
  2. 정렬 조건을 잘 읽고, 이에 맞게 reverse를 True와 False로 조정해야 한다.
  3. 수의 수학적 계산은 int형 일때 가능하므로, split 등 문자열을 다룬 후의 type에 주의한다.

'코딩테스트 > Python' 카테고리의 다른 글

[Programmers] Level 3. 가장 먼 노드  (1) 2022.12.01
[Programmers] Level 2. 수식 최대화  (0) 2022.11.29
[Programmers] Level 3. 징검다리 건너기  (0) 2022.11.26
[Programmers] Level 3. 디스크 컨트롤러  (0) 2022.11.17
[Programmers] Level 2. 메뉴 리뉴얼  (0) 2022.11.15
'코딩테스트/Python' 카테고리의 다른 글
  • [Programmers] Level 3. 가장 먼 노드
  • [Programmers] Level 2. 수식 최대화
  • [Programmers] Level 3. 징검다리 건너기
  • [Programmers] Level 3. 디스크 컨트롤러
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Programmers] Level 2. 방금 그 곡
상단으로

티스토리툴바