문제
풀이
#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);
}