문제 분석
작성코드
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);
}
}
|
출처
- 해당 문제의 저작권은 문제를 만든이에게 있으며 자세한 내용은 문제 링크에서 참조바랍니다.