Programing/백준, 프로그래머스(C++)

[C++][백준 2798] 블랙잭

hye3193 2025. 1. 3. 16:08

https://www.acmicpc.net/problem/2798

제출 코드

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

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n, m, card;
    vector<int> cards;

    cin >> n >> m;
    for (int i = 0; i < n; i++)
    {
        cin >> card;
        cards.push_back(card);
    }

    int max = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (j == i) continue;
            for (int k = 0; k < n; k++)
            {
                if (k == i || k == j) continue;
                int sum = cards[i] + cards[j] + cards[k];
                if (sum <= m && sum >= max) max = sum;
            }
        }
    }

    cout << max;
}

카드의 최대 수가 100이기 때문에 3중 for문 연산을 해도 1,000,000번의 연산만 필요해 브루트 포스로 풀이하였다