728x90
https://www.acmicpc.net/problem/22864
22864번: 피로도
첫 번째 줄에 네 정수 $A$, $B$, $C$, $M$이 공백으로 구분되어 주어진다. 맨 처음 피로도는 0이다.
www.acmicpc.net
하루에 한 시간 단위로 일을 하거나 쉬어도 된다. 하루에 한 시간 일하면 피로도 A 쌓이고 일은 B 만큼 처리 가능
한 시간 쉬면 피로도는 C만큼 줄어든다. 피로도가 음수로 내려가면 0으로
피로도가 최대한 M을 넘지 않게 일을 하려고 한다.
M를 넘기면 일하는데 번아웃이 와서 이미 했던 일들도 다 던져버리고 일을 그만두게 된다.
번아웃이 오지 않도록 일을 할 때 하루에 최대 얼마나 일을 할 수 있는지 구하자.
1. 일을 해도 m을 넘기지 않는다면 일하기 - 피로도 쌓기, 처리한 일 추가
2. 일을 하면 m을 넘긴다면 쉬기 - 피로도 줄이기 (만약 음수가 된다면 0으로 바꿔주기)
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int a, b, c, m, h = 24, w = 0, p = 0;
cin >> a >> b >> c >> m;
while(h--){
if(p+a <= m){ //일을 해도 m을 넘기지 않는다면 일하기
p += a; //피로도 쌓기
w += b;
}else{ //일을 하면 m을 넘긴다면 쉬기
p -= c; //피로도 줄이기
if(p < 0) p = 0;
}
}
cout << w << '\n';
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 15881번: Pen Pineapple Apple Pen (0) | 2022.07.09 |
---|---|
[백준/c++] 18238번: ZOAC 2 (0) | 2022.07.09 |
[백준/c++] 14720번: 우유 축제 (0) | 2022.07.08 |
[백준/c++] 2810번: 컵홀더 (0) | 2022.07.08 |
[백준/c++] 2720번: 세탁소 사장 동혁 (0) | 2022.07.08 |