반응형
출처: https://www.acmicpc.net/problem/1173
Input
5 70 120 25 15
Output
10
- 초기 맥박 상태는 문제에서 제시한 최소 맥박 상태와 동일.
- N분의 운동을 하기 위한 최소시간 (운동 + 휴식)을 찾는 문제로,
맥박 상태에 따라 최대한 운동을 하는 Greedy 방식 이용
- 운동을 하지 못하는 상태는 초기 상태 m (= 최소 맥박 조건)에서 한번 운동했을 때
최대 맥박(= M)을 초과하는 경우
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int N, m, M, T, R;
cin >> N >> m >> M >> T >> R;
// 초기 상태 = 최소 맥박 상태
// 초기 상태에서 운동을 한번도 하지 못한다면 운동 불가
if(m + T > M){
printf("%d", -1);
return 0;
}
// 최소 맥박에서 시작
int cur = m, answer = 0, exerciseTime = 0;
while(1){
// 최대 맥박을 넘어서지 않는다면
if(cur + T <= M){
cur += T; // 맥박수 증가
exerciseTime++;
}
// 운동할 수 없다면
else{
cur -= R;
// 최소 맥박 유지
if(cur < m) cur = m;
}
// 운동과 휴식에 소요한 시간
answer++;
if(exerciseTime == N){
printf("%d", answer);
return 0;
}
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1063 킹 (0) | 2021.02.26 |
---|---|
[BOJ] 백준 3985 롤 케이크 (0) | 2021.02.26 |
[BOJ] 백준 2580 스도쿠 (0) | 2021.02.26 |
[BOJ] 백준 1347 미로 만들기 (0) | 2021.02.26 |
[BOJ] 백준 1986 체스 (0) | 2021.02.26 |
댓글