문제를 딱 보자마자 든 생각이 그냥 브루트포스 사용하면 쉽겠다는 생각이 들었다. 다만 이 부분에서 조금 걱정 되었던 부분이 파이썬으로는 요롬코롬 for문 세 개 써서 만들면 되겠구나 하는 생각이 들었는데 시플플에서는 어떤 식으로 세 개를 중복 없이 골라서 비교할 수 있을 지 사실 감이 잡히지를 않았다. 그래서 그 부분에 대한 고민을 주로 했던 것 같다. 세 개가 순서대로 나오려면 순서가 고려되어야 할 거 같았는데 이 부분을 조절해주는 과정에서 한 번 실수가 있었지만 기본적인 틀은 동일하여서 생각보다는 어렵지 않게 해결하였다. 보면 알겠지만 이런 방향성으로 문제를 해결하는 것이 브루트 포스이다.
# include "iostream"
using namespace std;
int main(void){
int N, M;
cin>>N>>M;
int arr[N];
for (int i = 0; i < N; i++){
cin>>arr[i];
}
int max = 0;
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 ++){
if (arr[i] + arr[j] + arr[k] <= M){
if (arr[i] + arr[j] + arr[k] > max){
max = arr[i] + arr[j] + arr[k];
}
}
}
}
}
cout<<max;
}