백준 웹사이트 "2798번 - 블랙잭" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int N, M;
scanf("%d %d", &N, &M);
int cards[N];
for(int num=0; num<N; num++){
scanf("%d", &cards[num]);
}
int blackjack=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++){
int sum = cards[i]+cards[j]+cards[k];
if(sum>blackjack && sum<=M)
blackjack = sum;
}
}
}
printf("%d\n", blackjack);
}
문제 풀이
모든 경우를 하나하나, 빠짐없이 확인하는 방법인 '브루트포스 알고리즘'을 연습하는 문제입니다. 브루트포스 알고리즘의 경우, 풀이는 굉장히 쉽습니다. Line 7 ~ 10은 N장의 카드를 입력하는 단계로, 배열 'cards'에 각각의 카드를 입력합니다. Line 13 ~ 21에서는 가능한 3장의 조합을 모두 시도해보며, M과 가장 가까운 합을 변수 'blackjack'에 저장합니다. 모든 for문이 종료되면, blackjack에 마지막으로 저장된 수를 출력합니다.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 7568번 - 덩치 (0) | 2022.02.07 |
---|---|
[백준/C언어] 2231번 - 분해합 (0) | 2022.02.06 |
[백준/C언어] 11729번 - 하노이 탑 이동 순서 (0) | 2022.02.04 |
[백준/C언어] 2447번 - 별 찍기 - 10 (0) | 2022.02.03 |
[백준/C언어] 10870 - 피보나치 수 5 (0) | 2022.02.02 |