[BOJ] 백준_22864번_피로도(재채점)_C/C++백준 알고리즘2022. 1. 22. 00:17
목차
문제 출처
https://www.acmicpc.net/problem/22864
문제 설명
기존 코드
//[BOJ] 22864번_피로도
#include<iostream>
using namespace std;
int main()
{
int fatigue=0, time=0, work=0, rest=0, burnout=0;
int A, B, C, M;
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;
}
else
{
work+=B;
}
time++;
if (time == 24) {
cout << work << endl;
break;
}
}
return 0;
}
재채점 정답 코드
//[BOJ] 22864번_피로도(재채점)
#include<iostream>
using namespace std;
int main()
{
int f=0, w=0;
int A, B, C, M;
cin >> A >> B >> C >> M;
for (int i = 0; i < 24; i++)
{
if ((M - f) < A) {
f -= C;
if (f < 0)
f = 0;
}
else
{
f += A;
w += B;
}
}
cout << w << "\n";
return 0;
}
풀이 과정
갑자기 재채점 알림이 뜨고 실패로 처리되어 있어 이런 경우는 처음이라 당황스러웠다. 계속 수정하면서 프로그램을 돌려봤는데 이상한 점이 없는 것 같아서 문제를 해결하는 데 오래 걸렸다. 필요하지 않은 부분은 되도록 줄이려고 노력했고 좀 더 명분을 가지고 코드를 짜 보았다. 문제를 다시 읽던 중 아차 싶던 부분이 있었다. "단, 피로도가 음수로 내려가면 0으로 바뀐다." 바로 이 부분이었는데, 피로도를 처리하는 값인 fatigue가 음수로 떨어졌을 경우를 생각하지 않았던 것이다. 그 부분을 해결해 주니 정상적으로 성공 처리가 되었다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_1449번_수리공 항승_C/C++ (0) | 2022.01.25 |
---|---|
[BOJ] 백준_5585번_거스름돈_C/C++ (0) | 2022.01.23 |
[BOJ] 백준_11000번_강의실 배정_C/C++ (0) | 2022.01.21 |
[BOJ] 백준_1049번_기타줄_C/C++ (2) | 2022.01.19 |
[BOJ] 백준_2864번_5와 6의 차이_C/C++ (0) | 2022.01.12 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!