본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[코딩테스트/백준 알고리즘] 2309번 : 일곱 난쟁이 (자바, Java 풀이)

by 코코의 주인 2022. 9. 2.

문제

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net


문제 설명


문제 풀이

 9명 중에 진짜 난쟁이 7명을 고르는 것보다 9명 중에 가짜 난쟁이 2명을 골라내는 것이 더 빠르게 문제를 해겱할 수 있는 방법이다. 때문에 9명의 키를 모두 합한 뒤 100을 빼서 그 차이를 만족하는 범인 두명을 찾는 방법을 사용했다.

 


코드

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;	//난쟁이들 키의 합
        int[] trol = new int[9];	//난쟁이들의 키

        for(int i = 0; i < 9; i++) {
            trol[i] = sc.nextInt();
            sum += trol[i];
        }
        
        int diff = sum - 100;	//가짜 난쟁이 2명 키의 합
        Arrays.sort(trol);	//배열 정렬

        for(int i = 0; i < 9; i++) {
            for(int j = i + 1; j < 9; j++) {
                if(trol[i] + trol[j] == diff) {
                    for(int k = 0; k < 9 ; k++) {
                        if(k == i) {}
                        else if(k == j){}
                        else {
                            System.out.println(trol[k]);
                        }
                    }
                    System.exit(0);
                }
            }
        }
    }
}

댓글