[알고리즘]/백준

자바 - 구현 - 백준 2309 일곱 난쟁이(브루트포스 알고리즘)

broship 2021. 5. 14. 08:57

문제


 

 

 

문제해결1


import java.util.Arrays;
import java.util.Scanner;

public class B2_2309 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = 9;
        int[] arr = new int[n];
        int sum = 0;
        //9명의 키 전부 더하기
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
            sum += arr[i];
        }
        // 정렬 -> 오름차순 출력을 위해
        Arrays.sort(arr);
        //2명의 키 값 빼기, 모든 경우의 수만큼
        for (int i = 0; i < n; i++) {
            for (int j = i+1; j < n; j++) {
                if (sum - arr[i] - arr[j] == 100){
                    for (int k = 0; k < n; k++) {
                        if (arr[k]!=arr[i] && arr[k]!=arr[j])//난쟁이의 키는 다 다르므로
                            System.out.println(arr[k]);
                    }
                    //정답은 한번만 출력되도록
                    System.exit(0);
                }
            }
        }
    }
}

- 브루트 포스 알고리즘은 모든 경우의 수를 검색하는 알고리즘 기법이다

- 처음에는 7가지를 전부 더하는 방법을 생각하였으나 거꾸로 생각하면 전체 합에서 2명씩 뺀 모든 경우의 수를 찾는게 더 빠르다

- 정답이 여러개일때 한번만 출력되도록 System.exit(0)를 사용하였다