본문 바로가기
알고리즘/백준 Baekjoon

백준 2309번 일곱 난쟁이(JAVA)

by 꾸준함 2023. 1. 16.

백준 2309번

 

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

문제설명

9개의 값들 중 7개의 값이 합하여 100이 되는 경우의 수를 출력 하면 되는문제

> 브루트포스 알고리즘

 

 

접근

1. 9개중 7개를 뽑아서 100이 되야함 -> 9개중 2개를 뽑는것 과 같음.

2. 9개의 합에서 100을 뺀 값이 선택한 두개의 값이랑 같다면 해당 값을  0 으로 변경후 정렬(오름차순을 위해)

3. 인덱스 2번부터 9번까지 반복문을 돌며 출력.

 

 

코드

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String args[]) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int []num = new int[9];
        int sum = 0;
        for(int i=0;i<9;i++){
            num[i] = Integer.parseInt(bf.readLine());
            sum += num[i];
        }
        
        for(int i=0;i<8;i++){
            for(int j=i+1;j<9;j++){
                if(sum - (num[i] + num[j]) == 100){
                    num[i] = 0;
                    num[j] = 0;
                    Arrays.sort(num);
                    for(int k=2;k<9;k++){
                        System.out.println(num[k]);
                    }
                    return;
                } 
            }
        }
    }
}

풀이

> 위 접근과 동일