BOJ 2309. 일곱 난쟁이

1 minute read

BOJ 2309. 일곱 난쟁이

image

풀이

9 난쟁이 중 7 난쟁이가 아닌 2 난쟁이를 찾는 문제이니 나올 수 있는 경우의 수를 계산해보면
순서를 고려하지않고 n중 r을 찾는 경우이므로, 조합 nCr에 대입하면
image

이므로 36이다.

경우의 수가 적으니 모든 경우의 수에 대입하여 정답을 찾아보도록 한다.
7 난쟁이의 키의 합이 100이니
7 난쟁이가 아닌 2명을 제외하였을 때 키가 100이면 정답이다.

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int[] a = new int[9];
        int sum = 0;

        for (int i = 0; i < 9; i++) {
            a[i] = sc.nextInt();
            sum += a[i];
        }

        Arrays.sort(a);

        for (int i = 0; i < 9; i++) {
            for (int j = i + 1; j < 9; j++) {
                if ((sum - a[i] - a[j]) == 100) {
                    for (int k = 0; k < 9; k++) {
                        if (k != i && k != j) {
                            System.out.println(a[k]);
                        }
                    }
                    sc.close();
                    System.exit(0);
                }
            }
        }
    }
} 
import kotlin.system.exitProcess

fun main() {
    val a = (0 until 9).map { readLine()!!.toInt() }.toList().sorted()
    val sum = a.sum()

    for (i in 0 until 9) {
        for (j in i + 1 until 9) {
            if ((sum - a[i] - a[j]) == 100) {
                (0 until 9)
                    .filter { it != i && it != j }
                    .map { a[it] }
                    .forEach(::println)
                exitProcess(0);
            }
        }
    }
} 

풀이소스

github.com/beomjo/algorithm-study/commit/50e5df0644164843f65b928f04d2b46d1468e9c7