본문 바로가기

Algorithm/백준

[백준 - 11051] 이항계수 2 - java

[백준 - 11051] 이항계수 2


문제 설명

자연수 N 과 정수 K 가 주어졌을 때 이항 계수를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

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

출력

N K 이항계수를 10,007로 나눈 나머지를 출력한다.

입력 예제

5 2

출력 예제

10

풀이

오랜만에 수학개념이 나와서 이항계수 개념을 다시 보고왔다..ㅎㅎ
이항계수를 계속해서 나열해보면서 규칙을 찾아봤지만 실패..
구글이 주는 조금의 힌트를 얻어서 풀었다!
파스칼 삼각형! 정말 이거면 이 문제 그냥 풀린다..!!ㅎㅎ

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package baekJoon.DP;
 
import java.util.Scanner;
 
public class B_11051 {
 
    private static void solutiuon () {
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt();
        int k = sc.nextInt();
 
        int[][] dp = new int[n+1][n+1];
 
            for(int i=0 ; i<=n; i++) {
                for(int j=0; j<=i; j++) {
                    if(i == j || j == 0) {
                        dp[i][j] = 1;
                    } else {
                        dp[i][j] = (dp[i-1][j-1+ dp[i-1][j]) % 10007;
                    }
                }
            }
 
        System.out.println(dp[n][k]);
    }
 
    public static void main(String[] args) {
        solutiuon();
    }
}
 
cs