문제
자연수 N과 정수 K가 주어졌을 때 이항 계수 (NK)를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K ≤ N)
출력
(NK)를 출력한다.
package ch.baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/*
백준 11050 이항 계수 1
*/
public class Algorithm30 {
public static void main(String[] args) throws IOException {
// n! / (n-k)! * k!
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int result = fac(n,n) / (fac(n-m,n-m) * fac(m,m));
System.out.println(result);
}
public static int fac(int n , int m){
if(m == 1){
return n;
}else if(m == 0){
return 1;
}
else{
return fac(n*(m-1) , m-1);
}
}
}
풀이
일단 이항 계수의 공식을 적어 논뒤에 각각을 팩토리얼 해주는 매서드 fac을 만든 뒤 각각을 계산 해주었다.
생각보다 간단한 문제지만 공식을 모른다면 풀 수 가없을 것 같아 수학공부가 필요할 것 같다.
'Algorithm > 백준' 카테고리의 다른 글
| 백준 25206 너의 평점은 (0) | 2024.06.28 |
|---|---|
| 백준 2675 문자열 반복 (2) | 2022.11.23 |
| 백준 18258 큐2 (0) | 2022.08.28 |
| 백준 1764 듣보잡 (0) | 2022.08.25 |
| 백준 2259 수열 (0) | 2022.08.24 |