[백준] 2851번 : 슈퍼 마리오

박개발·2021년 10월 13일
0

백준

목록 보기
60/75

문제 푼 날짜 : 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;
}

결과

피드백

완전탐색 문제만 풀고 싶다...

profile
개발을 잘하고 싶은 사람

0개의 댓글