알고리즘

[백준, 파이썬, 1173번] 운동

hminor 2023. 12. 13. 11:34

풀이

 

  • 조건식을 통해 최대 혈압 - 최소 혈압의 차이가 T를 넘을 경우 -1 출력하도록 하기
  • 넘지 않고 최소 혈압에 운동 후의 추가 혈압이 최대를 넘지 않을 경우와
  • 넘을 경우에 대한 조건 분기를 하며 
  • 넘을 경우에는 다시 운동할 수 있는 혈압이 될때까지 while문을 반복한 다음
  • 운동한 뒤 카운팅하여 문제 해결

 

import sys
input = sys.stdin.readline

N,m,M,T,R = map(int,input().split())
be_m = m
cnt = 0

if M-m >= T: # 추가 혈압이 초과 되지 않는 범위
    for _ in range(N):
        if m+T <= M: # 맥박 초과 X
            m += T
            cnt += 1
        else:
            while (m+T > M):
                cnt += 1
                if m-R >= be_m: m -= R
                else:
                    m = be_m
                    break
            m += T
            cnt += 1
    print(cnt)
else: print(-1)