반응형
https://www.acmicpc.net/problem/22864
22864번: 피로도
첫 번째 줄에 $A$, $B$, $C$, $M$이 공백으로 구분되어 주어진다. (하루는 24시간이다.) 맨 처음 피로도는 0이다.
www.acmicpc.net
수학 + greedy 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
일한 양을 저장할 변수 work, 피로도 변수 tired, a, b, c, m을 선언합니다.
* int 범위 초과할 수 있으므로 long long으로 선언합니다.
📔 풀이과정
1. 24시간동안 일할 수 있으면 일 해줍니다. 일을 하고 work += b, 피로도가 a만큼 올랐으니 tired + a 해줍니다.
2. 일할 수 없다면 쉬어줍니다. tired -= c 해주며 tired음수면 0으로 다시 저장해줍니다.
📔 정답출력
work를 출력합니다.
📕 Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a, b, c, m, work, tired;
int main(){
cin >> a >> b >> c >> m;
for(int i = 1; i <= 24; i++){
if(tired + a <= m){
tired += a;
work += b;
}
else{
tired -= c;
if(tired < 0) tired = 0;
}
}
cout << work;
}
'Algorithm > Math' 카테고리의 다른 글
(C++) - 백준(BOJ) 8718번 : Bałwanek (0) | 2021.09.12 |
---|---|
(C++) - 백준(BOJ) 6768번 : Don’t pass me the ball! (0) | 2021.09.10 |
(C++) - 백준(BOJ) 1284번 : 집 주소 (0) | 2021.08.15 |
(C++) - 백준(BOJ) 13458번 : 시험감독 (0) | 2021.08.02 |
(C++) - 백준(BOJ) 17827번 : 달팽이 리스트 (2) | 2021.07.26 |