알고리즘

[백준, 파이썬, 1333번] 부재중 전화

hminor 2024. 1. 2. 17:27

풀이

  • 처음 해당 문제를 해결하고자 했을 때는 
  • 좀 다르게 접근해버려서 고민을 했는데 
  • 우선 결정적으로 해결하게 된 방법으로는 
  • 조건식으로 노래 끝나는 시간과 휴식이 끝나는 시간 사이에 
  • 벨 울리는 시간이 있는지 확인하면 되는데
  • 이때 놓치고 있던 부분이 
    • e_song <= bell <= e_rest
  • 이렇게 하니까 5초를 넘어가다보니 문제가 생겨 아래와 같이 작성하여 해결.

 

import sys
n,l,d = map(int,input().split())

e_song,e_rest,bell = 0,0,0
for _ in range(n):
    e_song += l
    e_rest = e_song+5
    while e_rest > bell:
        if e_song <= bell < e_rest:
            print(bell)
            sys.exit(0)
        else: bell += d
    e_song = e_rest
print(bell)