Algorithm/백준
백준 2798번 블랙잭(Java)
콩벌레 개발자
2021. 3. 15. 02:03
구할수 있는 모든 경우의 수를 구해, 그 수중에서 목표인 수에 가장 가까운 수를 출력하는 문제.
반복문으로 n번째 카드를 기준으로 삼고 그 카드를 더할수 있는 모든 경우의 수를 더해 배열에 저장후, 목표값과 가장 가까운 수를 출력하도록 했다.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int card_num=scanner.nextInt();
int[] card_list=new int[card_num];
List<Integer> card_sum=new ArrayList<>();
int target=scanner.nextInt();
int min=9999999;
int answer=0;
for(int i=0;i<card_num;i++){
card_list[i]=scanner.nextInt();
}
for(int i=0;i<card_num;i++){
for(int j=i+1;j<card_num;j++){
for(int z=j+1;z<card_num;z++){
card_sum.add(card_list[i]+card_list[j]+card_list[z]);
}
}
}
for(int i=0;i<card_sum.size();i++){
int num=target-card_sum.get(i);
if(num<0)
num=-1*num;
if(num<min) {
min = num;
answer=i;
}
}
System.out.println(card_sum.get(answer));
}
}