본문 바로가기

백준

[백준] 2309 일곱 난쟁이_ JAVA #완전탐색

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 


 

 

 


○ 풀이

 

 

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] arr = new int[9];

        int over = 0;
        for (int i = 0; i < arr.length; i++) {
            arr[i] = Integer.parseInt(br.readLine());
            over += arr[i];
        }

        boolean flag = true;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (over - arr[i] - arr[j] == 100) {
                    arr[i] = arr[j] = 100;
                    flag = false;
                    break;
                }
            }
            if(!flag) break;
        }

        Arrays.sort(arr);

        for (int i = 0; i < 7; i++) {
            System.out.println(arr[i]);
        }

    }
}

 

 

 

○ 풀이 설명

 

미리 9명의 값의 합을 구해놓고, 두 개를 묶는 모든 조건을 찾아보며 (9명의 합 - 100) 의 값과 같은 값인지 확인하였다.

for문이 두개이므로 flag 불린값을 둬서 두개의 for문을 모두 끝내는것이 핵심!

 

'백준' 카테고리의 다른 글

[백준] 2667 단지번호붙이기_ JAVA  (0) 2023.11.16
[백준] 수 정렬하기 2_ JAVA  (0) 2023.09.22
[백준] 10816 숫자 카드 2_ JAVA  (0) 2023.07.11
[백준] 10815 숫자 카드_ JAVA  (0) 2023.07.11
[백준] 10773 제로_ JAVA  (0) 2023.07.10