[브론즈 2] 백준 1173 - 운동 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/1173
풀이
- 현재 맥박 : m, 최대 맥박 : M
- 운동 할 때마다 맥박 T만큼 증가
- 쉬면 맥박 R만큼 감소
- 운동을 N번 해야한다.
- 현재 맥박이 M을 초과하면 운동을 못한다.
- 운동을 못할 때는 쉬어야한다.
- 운동 N번을 완료하는 데 걸리는 시간을 출력하고,
- 만약 아예 운동을 못 시작하는 상황이면 -1을 출력한다.
if m + T > M :
print(-1)
- 현재 맥박 m에 운동 후 증가량 T를 더했을 때, M을 넘으면,
- 아예 한 번도 운동할 수 없기에 -1을 출력하고 종료한다.
else :
timer = 0
X = m
while N > 0 :
timer += 1
- 타이머를 0으로 초기화 하고, 현재 맥박 X를 m으로 초기화한다.
- 운동을 N번 해야하므로, N > 0 동안만 반복한다.
- 1분이 흐를 때 마다 timer += 1을 진행한다.
if X + T <= M :
X += T
N -= 1
- 만약 현재 맥박 + 운동 증가량이 최대 맥박 M이하라면 운동이 성공하고, 맥박을 T만큼 올린다. 운동 횟수 N을 1 줄여준다.
else :
X -= R
X = max(X, m)
- 운동을 못하는 상황이면, 쉬어서 맥박을 R만큼 낮춘다.
- 다만 맥박이 m보다 내려가면 안되니까 max(X, m)으로 보정한다.
코드
# 백준 1173 - 운동
# 분류 : 구현
N, m, M, T, R = map(int, input().split())
if m + T > M :
print(-1)
else :
timer = 0
X = m
while N > 0 :
timer += 1
if X + T <= M :
X += T
N -= 1
else :
X -= R
X = max(X, m)
print(timer)
'Programming > 백준' 카테고리의 다른 글
[브론즈 4] 백준 14470 - 전자레인지 (파이썬) (0) | 2025.05.02 |
---|---|
[실버 1] 백준 1713 - 후보 추천하기 (파이썬) (0) | 2025.05.01 |
[골드 5] 백준 13398 - 연속합 2 (파이썬) (0) | 2025.04.30 |
[실버 4] 백준 10211 - Maximun Subarray (파이썬) (0) | 2025.04.30 |
[실버 1] 백준 16198 - 에너지 모으기 (파이썬) (1) | 2025.04.30 |
댓글
이 글 공유하기
다른 글
-
[브론즈 4] 백준 14470 - 전자레인지 (파이썬)
[브론즈 4] 백준 14470 - 전자레인지 (파이썬)
2025.05.02 -
[실버 1] 백준 1713 - 후보 추천하기 (파이썬)
[실버 1] 백준 1713 - 후보 추천하기 (파이썬)
2025.05.01 -
[골드 5] 백준 13398 - 연속합 2 (파이썬)
[골드 5] 백준 13398 - 연속합 2 (파이썬)
2025.04.30 -
[실버 4] 백준 10211 - Maximun Subarray (파이썬)
[실버 4] 백준 10211 - Maximun Subarray (파이썬)
2025.04.30