Computer Science/백준
백준 2798번 블랙잭
Dior2ky
2020. 2. 6. 16:55
반응형
백준 2798번 블랙잭 문제이다.
브루트포스 유형의 문제이다.
문제는 다음과 같다. 주어진 카드 중에서 3장을 골라 주어진 M 값에 가깝도록 만들어 주어야 한다.
브루트포스 문제이기 때문에 하나하나 확인해서 M에 가까운 값을 찾으면 된다.
for문 3개를 중첩해 모든 3개의 수를 고르는 경우의 수를 확인하여 합이 M에 가장 가까운 값을 찾도록 했다.
프로그래밍 언어는 C언어를 사용했다.
#include <stdio.h>
#include <stdlib.h>
int main(){
int n, m;
scanf("%d %d", &n, &m);
int* arr;
arr = (int*)malloc(sizeof(int)*n);
for(int i = 0; i < n; i++){
scanf("%d", arr + i);
}
int sum = 0;
int cha = 300001;
int result;
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++){
sum = arr[i] + arr[j] + arr[k];
if((m - sum) >= 0 && (m - sum) < cha){
cha = m - sum;
result = sum;
}
sum = 0;
}
}
}
printf("%d\n", result);
return 0;
}
이번에도 문제를 제대로 안 읽고 M을 넘지 않는다는 조건을 무시하고 풀어서 3번 틀리고 말았다...
반응형