코테 준비-문제풀기

백준 - 일곱난쟁이 자바 JAVA

FireStone 2020. 10. 23. 15:38

완전탐색- 조합으로 해결

여러 답중에 하나만! 뽑아 내야하므로

System.exit(0)을 사용해서 답이 나오면 시스템을 종료하도록 하였다.

 

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
public class Main
{
    static void combi(int[] arr,int start, int num, boolean[] visited){
        if(num==0){
            print(visited, arr);
            return ;
        }
        for(int i=start;i<arr.length;i++){
            visited[i]=true;
            combi(arr,i+1,num-1,visited);
            visited[i]=false;
        }
    }
    
    static void print(boolean[] visited, int[] arr){
        int sum=0;
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0;i<arr.length;i++){
            if(visited[i]){
                sum+=arr[i];
                list.add(arr[i]);
            }
        }
       
        if(sum==100){
            Collections.sort(list);
          for(int i=0;i<list.size();i++){
              System.out.println(list.get(i));
          }
          System.exit(0);
          return ;
        }
    }
    
	 public static void main(String[] args) {
        int n = 9;
        Scanner sc = new Scanner(System.in);
        int arr[] = new int[9];
        int num;
        for(int i=0;i<n;i++){
            num=sc.nextInt();
            arr[i]= num;
        }
        boolean[] visited = new boolean[9];
        combi(arr,0,7,visited);
    }

}

조합에는 이 블로그 글이 정리가 잘되어있으므로 참고하실 분은 참고하시길.. bcp0109.tistory.com/15 

 

조합 Combination (Java)

조합 연습 문제 조합이란 n  개의 숫자 중에서 r  개의 수를 순서 없이 뽑는 경우를 말합니다. 예를 들어 [1, 2, 3]  이란 숫자 배열에서 2개의 수를 순서 없이 뽑으면 [1, 2] [1, 3] [2, 3] 이렇게 3 개가

bcp0109.tistory.com