해결방법
세 개의 합을 구할 때 m보단 작되 제일 큰 수를 구하면 된다. 브루트 포스로 하나씩 비교해가면서 조건에 맞는 수를 찾으면 된다.
코드
#include <iostream>
using namespace std;
int main()
{
int arr[100];
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int result = 0;
int sum = 0;
for (int i = 0; i < n-2; i++) {
for (int j = i+1; j < n - 1; j++) { //j는 i+1 이기에 1에서 시작
for (int k = j+1; k < n; k++) { // k는 j+1이기에 2에서 시작.
sum = arr[i] + arr[j] + arr[k];
if (sum > result && sum <= m) result = sum;
}
}
}
cout << result;
return 0;
}
'역시 내 문제해결 알고리즘은 잘못됐다 > 브루트 포스' 카테고리의 다른 글
백준 1436번 영화감독 숌[C/C++] (0) | 2021.05.13 |
---|---|
백준 7568번 덩치 [C/C++] (0) | 2021.03.02 |
백준 1018번 체스판 다시 칠하기[C/C++] (0) | 2020.08.06 |
백준 2160번 C/C++ (0) | 2020.07.27 |
백준 10163번 C/C++ (0) | 2020.07.26 |