코딩문제/백준
2798 블랙잭
Drill_Labito
2020. 7. 9. 02:22
3중 for문을 이용하여, 모든 경우의 수를 다 점검하여, 최적의 값 즉 3개의 합이 M에 가장 가까운 값을 고르는 방식 이용. 만약 M에 일치하는 값이 나오면 이미 최적의 수이므로, 반복문을 종료 하기로 하였다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
int sum = 0;
cin >> n >> m;
vector<int> arr;
for (int i = 0; i < n; i++) {
int tmp;
cin >> tmp;
arr.push_back(tmp);
}
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
for (int k = j+1; k < n; k++) {
int tmp2 = arr[i] + arr[j] + arr[k];
if (m - tmp2 < m - sum && tmp2 <= m) {
sum = tmp2;
if (sum == m) break;
}
}
}
}
cout << sum << endl;
return 0;
}