알고리즘
[JAVA] 백준 2798번 블랙잭
멋쟁이개굴이
2020. 2. 4. 14:54
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[] cards;
cards = new int[N];
for(int i = 0; i < N; i++) {
cards[i] = sc.nextInt();
}
sc.close();
int max = 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++) {
if(cards[i] + cards[j] + cards[k] <= M) {
if(max < cards[i] + cards[j] + cards[k]) {
max = cards[i] + cards[j] + cards[k];
}
}
}
}
}
System.out.println(max);
}
}
블랙잭을 변형한 게임으로
입력창의 첫째줄은 카드의 개수(N) , 카드들의 최대값(M) 을 입력하고
둘째줄은 카드의 개수(N)만큼 임의의 숫자들을 입력한다.
카드들 중 세개의 카드의 합이 최대값(M)에 가장 가까운 수를 구하는 문제이다.
for문을 세번 반복하여 모든 경우의 수를 구한다.
이를 브루트포스(Brute Force) 알고리즘 이라고 한다.
아래의 링크가 매우 도움이 되었다!
https://parkhyeokjin.github.io/algorithm/2019/09/05/baekjoon-2798.html
결과 :