구할수 있는 모든 경우의 수를 구해, 그 수중에서 목표인 수에 가장 가까운 수를 출력하는 문제.
반복문으로 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));
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 1436번: 영화감독 숌(Java) (0) | 2021.03.29 |
---|---|
백준 1018번 체스판 다시 칠하기(Java) (0) | 2021.03.27 |
백준 11729번 하노이탑 이동순서(Java) (0) | 2021.03.13 |
백준 2447번 별찍기-10(Java) (0) | 2021.03.12 |
백준 10870번 피보나치 수 5(Java) (0) | 2021.03.12 |