Devlog
#include <iostream>
using namespace std;

int main(){

    int A, B, C, M;
    int fatigue = 0, time = 0, work = 0, rest = 0, burnout = 0;

    cin >> A >> B >> C >> M;

    rest = C;
    burnout = M;

    if(A > M){
        cout << 0 << endl;
        exit(0);
    }
        while(1){
            fatigue += A;
            if(fatigue>burnout){
                fatigue -= A;
                fatigue -= rest;
                if(fatigue < 0){
                    fatigue = 0;
                }
            }
            else{
                work += B;
            }
            time++;

            if(time == 24){
                cout << work << endl;
                break;
            }
        }

    return 0;
}

fiatigue가 음수이면 0이 되는 조건이 있다는 것을 빼먹어서 바로 통과되지 못했다

 

가장 먼저 fatigue에 입력된 피로도(A) 값을 더해주고

만약 burnout보다 그 값이 크다면 더 이상의 일은 불가능하므로 fatigue에서 A를 빼주어 휴식을 먼저 취하게 해줌 (fatigue-rest)

만약 burnout보다 그 값이 작다면 work에 일의 양(B)를 더해줌

두 가지 경우 모두 작업 시간은 한 시간 지나므로 time 1 증가 처리를 해줌 (24가 되기까지)

'스터디 > 알고리즘' 카테고리의 다른 글

[백준 5212] 지구 온난화  (0) 2022.01.13
[백준 2164] 카드2  (0) 2022.01.10
[백준 2606] 바이러스  (0) 2022.01.10
[백준 20436] ZOAC 3  (0) 2022.01.10
[백준 1158] 요세푸스 문제  (0) 2022.01.06
profile

Devlog

@덩이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그