본문 바로가기

Algorithm/백준

백준 11050 이항 계수 1

문제

자연수 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