100^3은 1초 안에 해도 부담 없는 개수이다.
#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
int N, M, answer;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> N >> M;
v = vector<int>(N);
for (int &i : v)
{
cin >> i;
}
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 = v[i] + v[j] + v[k];
if (sum > M)
{
continue;
}
answer = max(sum, answer);
}
}
}
cout << answer;
return 0;
}
3중 반복문을 활용하여 모든 카드의 조합을 확인하고 M에 최대한 가까운 합을 구해주면 된다.