본문 바로가기
백준

[백준] 11050번 : 이항 계수 1 – JAVA [자바]

by Hongwoo 2022. 8. 14.
반응형

https://www.acmicpc.net/problem/11050

 

11050번: 이항 계수 1

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 11050번 이항 계수 1은 브론즈 1 난이도의 수학 및 구현 문제이다. 이 문제에서는 정수 N과 K가 주어진다. 이때 nCk를 구하면 된다. 여기서 C는 Combination을 뜻한다.

 

우선 nCr의 공식은 다음과 같다. 

 

따라서 nCk를 구하려면 n! 과 k!, 그리고 (n - k)! 를 구해야 한다. 따라서 팩토리얼을 구하는 함수를 아래에 있는 코드처럼 따로 메서드로 만들어준다. 이 메서드는 int n을 매개 변수로 갖고 n! 를 계산한 후에 반환시켜주는 함수이다.

 

그리고 분자와 분모를 따로 구분해준다. 이때 분자는 long형 변수 top이고, 분모는 long형 변수 bottom이라고 하겠다. 이때 top과 bottom은 다음과 같다.

 

top = factorial(n)

bottom = factorial (k) * factorial (n - k)

 

top과 bottom을 구했으면 top / bottom 한 값을 출력만 해주면 된다.

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        long top = factorial(n);
        long bottom = factorial(k) * factorial(n-k);
        System.out.print(top / bottom);
    }

    // n!를 계산하는 함수
    static long factorial(int n) {
        long ret = 1;
        while (n > 1) {
            ret *= n;
            n--;
        }
        return ret;
    }
}

 

 

반응형

댓글