알고리즘/백준

백준_2798 : 블랙잭 - C++

맏리믓 2023. 6. 25. 17:52

문제


문제 해석

 - 주어진 카드중 3장을 뽑아서 더했을 때 문제에서 주어진 M 을 넘지 않으면서 가장 큰 수를 찾으면 되는 문제이다.


알고리즘

 - 생각 보다 시간이 넉넉 하기 때문에 모든 경우의 수를 다 돌려 가며 가장 큰 수를 찾으면 된다.

 - 카드 3장을 찾아야 하기 때문에 3중 for 를 돌면서 3장을 골라주고 이를 더해 M 을 넘지 않는 수를 찾아 주면 되는 간단한 문제이다.


코드

#include <iostream>
#include <vector>
using namespace std;

int N, M;
vector<int> card;

int main(){
    cin >> N >> M;
    for(int i = 0; i < N; i++){
        int tmp = 0;
        cin >> tmp;
        card.push_back(tmp);
    }

    int sum = -1;
    for(int i = 0; i < N; i++){
        for(int j = i+1; j < N; j++){
            for(int k = j+1; k < N; k++){
                int tmp = card[i] + card[j] + card[k];
                if(sum < tmp && tmp <= M){
                    sum = tmp;
                }
            }
        }
    }
    cout << sum << '\n';
}