본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1173 운동

by 까망 하르방 2021. 2. 26.
반응형

출처: 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

댓글