본문 바로가기
문제 풀이/백준(BOJ)

[C++] 백준 11051번 : 이항 계수 2

by 희조당 2021. 7. 11.
728x90

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

 

11051번: 이항 계수 2

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

www.acmicpc.net


 문제 풀이

배열 DP에 이항 계수를 저장하면 된다.

이때 이항 계수의 값은 파스칼의 법칙을 이용하면 쉽다!

 느낀 점

고등학교 때 배웠던 파스칼의 법칙을 이렇게 쓸 줄은 몰랐다. 처음에는 파스칼의 법칙을 기억하지 못해서 없는 코드로 구현했는데 틀려서 약간의 구글링으로 해결했다.. ^.^

 코드

#include <iostream>

using namespace std;

int n, k;
long long dp[1002][1002] = { 0, };

void solution() {
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= k;j++) {
			if (j == 0 || i == j) dp[i][j] = 1;
			else if (j == 1) dp[i][j] = i;
			else if (j > i) dp[i][j] = 0;
			else dp[i][j] = (dp[i - 1][j] + dp[i - 1][j - 1]) % 10007;
		}
	}
}

int main() {
	cin >> n >> k;
	solution();
	cout << dp[n][k] % 10007;
}

'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글

[C++] 백준 9375번 : 패션왕 문희조  (0) 2021.07.19
[C++] 백준 1010번 : 다리 놓기  (0) 2021.07.19
[C++] 백준 3036번 : 링  (0) 2021.07.03
[C++] 백준 2981번 : 검문  (0) 2021.07.03
[C++] 백준 13305번 : 주유소  (0) 2021.07.01

댓글