알고리즘/백준 알고리즘
백준 2798번 블랙잭[C++]
빠켱이
2020. 12. 26. 02:04
2798번은 브루트 포스 문제로써 모든 경우의 수를 다 따지며 비교해 최종적으로 가장 해당 숫자에 가까운 값을 얻어내면 됩니다.
3중 for문으로 i,j,k를 돌며 같은 카드를 고를 수 없으므로 if문안에 조건에 모두 다를 때와 3 카드의 합이 m을 넘지 않는 값 중 m과의 차이가 가장 작은 값을 선택하고, 출력 시 뺄셈을 하기 전 값을 출력해줘야 하므로 원래 값을 출력해줍니다
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int m;
int arr[101];
int main(){
int value = 100001;
scanf("%d %d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%d", &arr[i]);
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
for(int k = 0; k < n; k++){
if(i != j && j != k && k != i && (arr[i] + arr[j] + arr[k]) <= m){
value = min(m - (arr[i] + arr[j] + arr[k]), value);
}
}
}
}
printf("%d", m - value);
return 0;
}