코딩테스트/백준
[BJ] 2798. 블랙잭
jhk828
2021. 2. 14. 03:15
[BJ] 2798. 블랙잭
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
import java.io.*;
import java.util.*;
// 210211
public class Main_BJ_2798_블랙잭 {
static int N, M;
static int[] arr;
static int max = 0;
static boolean[] isSelected;
static void permutation(int cnt, int L, int total) {
if (total > M) return;
if (cnt == 3) {
max = Math.max(max, total);
return;
}
if (L > N) return;
for(int i=0; i<N; i++) {
if (isSelected[i]) continue;
isSelected[i] = true;
permutation(cnt+1, L+1, total+arr[i]);
isSelected[i] = false;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
arr = new int[N];
isSelected = new boolean[N];
for(int i=0; i<N; i++) {
arr[i] = sc.nextInt();
}
permutation(0, 0, 0);
System.out.println(max);
sc.close();
}
}