문제 푼 날짜 : 2021-10-12
문제 링크 : https://www.acmicpc.net/problem/2851
완전 탐색으로 해결할 수 있는 문제였다.
주어진 10개의 숫자를 처음부터 하나씩 더해가다가 합과 100과의 차이가 가장 작은 경우를 찾아주면 된다.
이 때, 아래의 조건을 만족시키기 위해 어떤 두 수가 100과의 차이가 같은 경우, 더 큰 값으로 update해주었다.
만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다.
// 백준 2851번 : 슈퍼 마리오
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int diff = 987654321, sum = 0, ans;
for (int i = 0, num; i < 10; i++) {
cin >> num;
sum += num;
if (diff > abs(100 - sum)) {
diff = abs(100 - sum);
ans = sum;
} else if (diff == abs(100 - sum)) {
if (ans < sum) {
ans = sum;
}
}
}
cout << ans;
return 0;
}
완전탐색 문제만 풀고 싶다...