본문 바로가기
Develop/백준 (Cpp)

[백준] 2851번 : 슈퍼 마리오 (C++)

by Tarra 2024. 1. 4.

2851번 : 슈퍼 마리오


문제)

슈퍼 마리오 앞에 10개의 버섯이 일렬로 놓여져 있다. 이 버섯을 먹으면 점수를 받는다.

슈퍼 마리오는 버섯을 처음부터 나온 순서대로 집으려고 한다. 하지만, 모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다. 중간에 버섯을 먹는 것을 중단했다면, 그 이후에 나온 버섯은 모두 먹을 수 없다. 따라서 첫 버섯을 먹지 않았다면, 그 이후 버섯도 모두 먹을 수 없다.

마리오는 받은 점수의 합을 최대한 100에 가깝게 만들려고 한다.

버섯의 점수가 주어졌을 때, 마리오가 받는 점수를 출력하는 프로그램을 작성하시오.

 

 

 

입력 :

총 10개의 줄에 각각의 버섯의 점수가 주어진다. 이 값은 100보다 작거나 같은 양의 정수이다. 버섯이 나온 순서대로 점수가 주어진다.

 

 

 

 

출력 :

첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다.

 

 

 

 

 

풀이)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 2851. 슈퍼 마리오
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> vec;
    vec.resize(10);
    for (int& ele : vec) cin >> ele;
 
    int answer = 0;
    int compare = 9999999;
 
    // i번째 버섯까지 먹는다.
    for (int i = 0; i < 10; i++)
    {
        int total = 0;
 
        for (int j = 0; j <= i; j++)
        {
            total += vec[j];
        }
 
        if (compare >= abs(100 - total))
        {
            answer = max(answer, total);
            compare = abs(100 - total);
        }
 
    }
 
    cout << answer;
 
    return 0;
}
 
 
cs

출처 : https://www.acmicpc.net/problem/2851 

 

2851번: 슈퍼 마리오

첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다.

www.acmicpc.net