💻 Algorithm/Baekjoon

[JAVA] 백준 11050 - 이항 계수1

dlalwl_jpg 2022. 7. 17. 17:54

브론즈 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