BOJ 1173

Kaydenna92·2022년 7월 19일
0

Algorithm

목록 보기
18/36

문제보기

# 운동을 할 수 없는 경우 -> 초기맥박 + 운동 시 증가하는 맥박 > 최대맥박 -> 반복문을 나온다
# 현재 맥박 + 운동 시 증가하는 맥박 <= 최대맥박 -> 운동 가능 / 운동 시간 증가, 현재 맥박 = 현재맥박 + 증가 맥박
# 휴식 현재 맥박 + 운동시 증가하는 맥박 > 최대 맥박 -> 현재맥박 - R이 m보다 작을 때 현재 맥박은 m이기 때문에, max(현재맥박 - R, m)


N, m, M, T, R = map(int, input().split()) #운동시간, 최소 맥박(현재 맥박), 최대 맥박, 맥박 증가, 맥박 감소

workout, time = 0, 0
heart = m

while workout < N:
    # 운동 X
    if m + T > M: # m = 60, M = 70, T = 11 -> 운동 불가.
        break

    # 운동
    if heart + T <= M:
        heart += T
        workout += 1

    # 휴식
    else:
        heart = max(heart-R, m) # 현재 맥박 - R이 m보다 작다면 -> 현재맥박은 m으로 재 할당

    
    time += 1

print(time if workout == N else -1)
profile
persistently

0개의 댓글