슬기로운 개발생활

[백준] 2309번 일곱 난쟁이 자바(Java)

by coco3o
반응형

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

2309번: 일곱 난쟁이

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

www.acmicpc.net


정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    static int[] N = new int[9];
    static int sum = 0;
    static int fake1 = 0, fake2 = 0;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        for (int i = 0; i < N.length; i++) {
            N[i] = Integer.parseInt(br.readLine());
            sum += N[i]; // 난쟁이 키의 합을 계산
        }
        Arrays.sort(N); // 오름차순 정렬
        
        for (int i = 0; i < N.length; i++) { // 핵심
            for (int j = i + 1; j < N.length; j++) {
                if (sum - N[i] - N[j] == 100) {
                    fake1 = N[i];
                    fake2 = N[j];
                }
            }
        }
        for (int i = 0; i < N.length; i++) {
            if(fake1 == N[i] || fake2 == N[i]) continue;
            System.out.println(N[i]);
        }
    }
}

설명

1. 난쟁이 9명의 키의 합을 sum에 저장한다.
2. 난쟁이의 키를 오름차순으로 정렬한다.
3. sum - N[i] - N[j] 가 100이라면, N[i]와 N[j]는 가짜 난쟁이일 것이다.
4. 가짜 난쟁이를 제외하고 출력한다.

반응형

블로그의 정보

슬기로운 개발생활

coco3o

활동하기