[Python] 프로그래머스(Lv2) - 방금그곡 (2018 KAKAO BLIND RECRUITMENT[3차] )

Kerri·2021년 4월 19일
0

코테

목록 보기
30/67

안녕하세요 :)

취준으로 바쁜 요즘.... 오랜만에 코테 연습 글을 올리네요 ^^;

https://programmers.co.kr/learn/courses/30/lessons/17683
이 문제는 단순한 구현문제였습니다.

'#' 처리를 어떻게 하느냐가 관건인것같습니다.
저는 조건 m과 현재 비교할 music에서 만약 C# 이라면 !C#으로 변경해주어서 같은지 비교하도록 구현했습니다.

from datetime import datetime


def solution(m, musicinfos):
    answer = ''
    new_m = ''
    i = 0

    max_play_time = -1

    while i < len(m):
        if i + 1 < len(m):
            if m[i+1] == '#':
                new_m += '!' + m[i:i+2]
                i += 2
            else:
                new_m += m[i]
                i += 1
        else:
            new_m += m[i]
            break

    for music in musicinfos:
        music = music.split(',')
        start = datetime(2021, 4, 20, int(music[0][:2]), int(music[0][-2:]))
        end = datetime(2021, 4, 20, int(music[1][:2]), int(music[1][-2:]))
        play_time = (end - start).seconds // 60
        play_music = ''

        melody = []

        i = 0
        while i < len(music[3]):
            if i + 1 < len(music[3]):
                if music[3][i] != '#' and music[3][i + 1] == '#':
                    melody.append('!'+music[3][i:i + 2])
                    i += 2
                else:
                    melody.append(music[3][i])
                    i += 1
            else:
                melody.append(music[3][i])
                break

        for minute in range(play_time):
            play_music += melody[minute % len(melody)]

        if new_m in play_music:
            if max_play_time == -1 or max_play_time < play_time:
                max_play_time = play_time
                answer = music[2]

    return answer if answer else "(None)"
profile
안녕하세요 !

0개의 댓글