1 minute read



문제 분석


작성코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        // N개의 상의와 하의는 서로 다른 색상의 조합인 경우의 수가 나와야 한다.
        // 상의 TA TB TC TD TE, 하의 BA BB BC BD BE가 있다고 하면
        // TA를 골랐다면 BA는 못고르기 때문에 BB, BC, BD, BE 중 하나를 골라야 한다.
        // 이를 조합론 점화식으로 세워보면, nCr 공식을 이용하면 된다.
        // 4C1 + 4C1 + 4C1 + 4C1 + 4C1로 경우의 수는 20개가 된다.
        
        // 이때, 이 점화식을 재귀함수를 이용해 경우의 수를 구하면 된다.
        // 4C1(4) = 3C0(1) + 3C1(3) 이다.
        // 이 재귀함수는 nCr = (n-1)C(r-1) + (n-1)Cr이라는 재귀 식을 적용하면 된다.

        int N = Integer.parseInt(br.readLine());
        int result = 0;
        
        for(int i=0; i<N; i++) {
            result += comb(N-1, 1);
        }
        
        bw.write(result+"\n");

        bw.flush();
        bw.close();
        br.close();
    }
    static int comb(int n, int r) {
        if(n == 0) {
            return 0;
        }
        if(r == 0 || n == r) {
            return 1;
        }
        return comb(n-1, r-1) + comb(n-1, r);
    }
}

출처


  • 해당 문제의 저작권은 문제를 만든이에게 있으며 자세한 내용은 문제 링크에서 참조바랍니다.