#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 |