PS/Implementation

백준 1333번

닻과매 2021. 10. 1. 16:17

문제

얼마전, Day Of Mourning의 새 앨범이 나왔고, 강토는 이 앨범을 들으려고 한다.

이 앨범에는 총 노래가 N곡이 들어있고, 모든 노래의 길이는 L초이다. 그리고, 노래와 노래 사이에는 5초 동안 아무 노래도 들리지 않는 조용한 구간이 있다.

강토가 앨범의 첫 곡을 듣는 순간이 0초이다. 그리고 그 0초부터 강토의 전화벨이 울리기 시작한다. 전화벨은 D초에 1번씩 울리며, 한 번 울릴 때 1초동안 울린다.

강토는 락 스피릿을 진심으로 느끼기 위해서 볼륨을 매우 크게 하고 듣기 때문에, 노래가 나오는 중에는 전화벨 소리를 듣지 못한다.

만약, 전화벨이 노래가 시작되는 순간 울린다면, 강토는 전화를 받지 못한다. 또, 전화벨이 노래가 끝나는 순간 같이 끝난다면, 강토는 전화를 받을 수 없다.

강토는 앨범을 1번만 듣는다. 즉, 모든 앨범 수록곡을 다 듣고 난 후에는 전화벨을 들을 수 있다.

강토가 전화벨을 들을 수 있는 가장 빠른 시간을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N, L, D가 공백을 사이에 두고 주어진다. 모든 수는 1,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 강토가 전화벨을 들을 수 있는 가장 빠른 시간을 출력한다.

 

 

 

문제 독해가 가장 어려운 문제가 아닌가 싶다. 머릿속으로 '대충 맞겠지?'하고 푸니까 틀리고, 틀리다 보니 머리가 복잡해졌는데, 그냥 간단한 메모 및 예시 케이스만 적으면서 풀었어도 바로 이해하고 풀 수 있지 않았을까 싶다.

 

import sys

NLD = map(intsys.stdin.readline().split())

bell_time = D

elapsed_time = L

while(bell_time <= (L+5)*(N-1)+L):

    if elapsed_time <= bell_time <= elapsed_time+4:

        print(bell_time)

        break

    elif elapsed_time+4 < bell_time:

        elapsed_time += L+5

    else:

        bell_time += D

    # print(elapsed_time, bell_time)

if bell_time > (L+5)*(N-1)+L:

    print(bell_time)