본문 바로가기

알고리즘/python

[python/파이썬] 백준 1173 운동

반응형

[문제 출처]

https://www.acmicpc.net/problem/1173

 

1173번: 운동

첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다.

www.acmicpc.net

 

[문제 풀이]

 

N분 동안 운동을 하려고 한다.

1분 운동을 하면 T만큼 심박수가 오르고, 1분 휴식을 취하면 R만큼 심박수가 떨어진다.

 

초기 심박수는 m이며 휴식을 취해 심박수가 m보다 작아지면 심박수는 m이 된다.

최대 심박수는 M이며, 절대로 심박수는 M을 넘어서는 안된다.

 

이러한 조건을 만족하여 N분의 운동을 하는데 필요한 시간을 구하는 문제이다.

 

 

초기 심박수에서 운동을 했을 때 최대 심박수를 넘는 경우는 운동을 할 수 없기에 -1을 출력해줘야 한다.

그 이외의 경우는 운동을 해도 최대 심박수를 넘지 않는다면 운동을 하고,

그렇지 않을 경우는 휴식을 취하도록 하여 전체 시간과 운동 시간을 체크한다.

 

#1173

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

time = 0
now = m
if m + T > M :
  print(-1)
else:
  while True:
    if N == 0:
      break
    if now + T <= M:
      now += T
      N -= 1
    elif now - R < m:
      now = m
    elif now - R >= m:
      now -= R

    time += 1

  print(time)

 

반응형