문제 해석
만약 {1, 2, 3, 4, 5}가 주어질 때, 3개를 뽑는다고 가정하자.
원소 1를 기준으로 생각해봤을 때,
원소 1를 선택 한 경우 : 나머지 4개 중에서 2개를 선택 ₄C₂
원소 1을 선택하지 않은 경우 : 나머지 4개 중에서 4개를 선택 ₄C₄
-> 각각의 경우의 수를 더한 결과가 ₅C₃의 모든 경우가 되므로
₅C₃ = ₄C₂ + ₄C₄ 으로 표현할 수 있고 위의 점화식이 잘 성립함을 알 수 있다.
코드
import java.io.*;
import java.util.StringTokenizer;
public 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));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); //n
int k = Integer.parseInt(st.nextToken()); //k
br.close();
//이항 계수 구하는 공식
bw.write(factorial(n)/(factorial(k)*(factorial(n-k))) + "\n");
bw.flush();
bw.close();
}
//팩토리얼 구하는 공식
static int factorial(int num)
{
int result = 1; //0과 1 팩토리얼은 1이기 때문에 1부터 시작
for(int i = 2; i <= num; i++)
{
result = result * i;
}
return result;
}
}
결과
느낀 점