[문제]
https://www.acmicpc.net/problem/1173
[풀이]
sys.stdin.readline()이 기존에 쓰던 입력 방식보다 빠른 입력이라고 해서 바꿨다.
# N, m, M, T, R = map(int, input().split()) 밑 방법보다 시간복잡도가 안좋음
N, m, M, T, R = map(int, sys.stdin.readline().split())
1) 운동을 할 수 없는 경우
초기 맥박 + 운동 시 증가하는 맥박 > 최대 맥박 일 경우 운동을 할 수 없으므로 반복문을 나온다.
2) 운동
현재 맥박인 pulse + 운동 시 증가하는 맥박 <= 최대 맥박 일 경우 운동을 할 수 있다.
이 경우 pulse += 운동시 증가하는 맥박 T, 운동한 시간인 ex_minute을 1 증가시켜준다.
3) 휴식
pulse + 운동 시 증가하는 맥박 > 최대 맥박 일 경우 휴식을 하게 되는데
pulse - R이 m보다 작을 때 pulse는 m이기 때문에 max(pulse - R, m)로 비교해 pulse값에 넣었다.
[코드]
import sys
if __name__ == '__main__':
N, m, M, T, R = map(int, sys.stdin.readline().split())
minute, ex_minute = 0, 0
pulse = m
while ex_minute < N:
# 운동을 할 수 없는 경우
if m + T > M:
break
# 운동
if pulse + T <= M:
pulse += T
ex_minute += 1
# 휴식
else:
pulse = max(pulse - R, m)
minute += 1
print(minute if ex_minute == N else -1)
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 1225번 이상한 곱셈 (0) | 2021.07.10 |
---|---|
[Python] BOJ/백준 1373번 2진수 8진수 (0) | 2021.07.10 |
[Python] BOJ/백준 1264번 모음의 개수 (0) | 2021.07.09 |
[Python] BOJ/백준 1333번 부재중 전화 (1) | 2021.07.08 |
[Python] BOJ/백준 1284번 집 주소 (0) | 2021.07.08 |