브론즈 I
https://www.acmicpc.net/problem/11050
11050번: 이항 계수 1
첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))
www.acmicpc.net
문제
자연수 N과 정수 K가 주어졌을 때 이항 계수 (NK)를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K ≤ N)
출력
(NK)를 출력한다.
접근방법
분모와 분자를 나눠 따로 구한 후 결과값을 구하였다.
코드
package bj11050;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class bj11050 {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken()); //N입력
int K = Integer.parseInt(st.nextToken()); //K입력
int n = 1, n_k = 1, k = 1, result;
for(int i = N; i >= 1; i--) //N! 계산
n *= i;
for(int i = N - K; i >= 1; i--) //(N - K)! 계산
n_k *= i;
for(int i = K; i >= 1; i--) //K! 계산
k *= i;
result = n / (n_k * k); //N! / (N - K)! * K! 계산
//결과 출력
System.out.println(result);
}
}
NOTE
이항계수 계산하는 방법
ex) N = 5, K = 2 -> N! / (N - K)! * K! = 5! / 3! * 2! = 10
출처 - https://shoark7.github.io/programming/algorithm/3-ways-to-get-binomial-coefficients
'💻 Algorithm > Baekjoon' 카테고리의 다른 글
[JAVA] 백준 1191 - 단어 정렬 (0) | 2022.08.02 |
---|---|
[JAVA] 백준 10814 - 나이순 정렬 (0) | 2022.07.31 |
[JAVA] 백준 11651 - 좌표 정렬하기2 (0) | 2022.07.17 |
[JAVA] 백준 11650 - 좌표 정렬하기 (0) | 2022.07.17 |
[JAVA] 백준 2751 - 수 정렬하기2 (1) | 2022.07.17 |