쌓고 쌓다
[백준] 슈퍼 마리오 2851번 C++ 풀이 본문
https://www.acmicpc.net/problem/2851
#include <iostream>
#include <cmath>
using namespace std;
int arr[10];
int res = 0;
void solve()
{
int sum=0;
for (int i = 0; i < 10; i++)
{
sum += arr[i];
if (abs(100 - res) >= abs(100 - sum))
{
res = sum;
if (res >= 100)
{
cout << res;
return;
}
}
}
cout << res;
}
int main(void)
{
for (int i = 0; i < 10; i++)
{
cin >> arr[i];
}
solve();
}
res(결과)와 sum(이제껏 합)이 100과 얼마나 차이가 나는지 절댓값으로 확인 후
현재까지의 결과보다 차이가 더 안나는 sum을 찾은 경우 갱신을 해줍니다
하지만 100이 넘어가는 경우 그것은 즉시 바로 정답처리를 해주고 return으로 함수를 종료해줍니다
왜냐하면 100이 넘어가는 첫 sum이 무조건 정답일 수밖에 없기 때문입니다
만약 100이 안 넘어가는 경우 계속 수를 더해주면 됩니다.
for문을 다 통과해도 100이 안넘어가는경우 그냥 res를 출력해주면 됩니다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 행복 15969번 C++ 풀이 (0) | 2022.01.17 |
---|---|
[백준] 피시방 알바 1453번 C++ 풀이 (0) | 2022.01.08 |
[백준] 학점계산 2754번 C++ 풀이 (0) | 2022.01.05 |
[백준] 일곱 난쟁이 2309번 C++ 풀이 (0) | 2022.01.04 |
[백준] 생태학 4358번 C++ 풀이 (0) | 2022.01.03 |
Comments