(cpp) Baekjoon 2798번 문제 ‘블랙잭’ - 브루트포스

Baekjoon 2798번 문제 ‘블랙잭’ - 브루트포스


문제

풀이

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;

int n, m, num;
vector<int> num_list;
vector<int> ans_list;
vector<int> sum_list;

int main() {
	// 카드 합 21 이내에서 가장 크게 만들기
	// n장 양의 정수카드
	// m :딜러가 외치는 수
	//플레이어가 n장 중 3장 고르기
	//이 3장의 합이 m 이내에서 가장 크게 만들어야

	cin >> n >> m;
	int ret = n;
	while (ret--) {
		cin >> num;
		num_list.push_back(num);
	}

	for (int i = 0; i < n-2; i++) {
		for (int j = i+1; j < n-1; j++) {
			for (int k = j + 1; k < n; k++) {
				int sum = num_list[i] + num_list[j] + num_list[k];
				sum_list.push_back(sum);
			}
		}
	}

	sort(ans_list.begin(), ans_list.end());
	for (int i = 0; i < size(sum_list); i++) {
		if (sum_list[i] <= m) {
			ans_list.push_back(sum_list[i]);
		}
	}
	int ans = *max_element(ans_list.begin(), ans_list.end());
	printf("%d", ans);


}