https://www.acmicpc.net/problem/16395
๋ฌธ์
ํ์ค์นผ์ ์ผ๊ฐํ์ ์ดํญ๊ณ์๋ฅผ ์ผ๊ฐํ ํํ๋ก ๋ฐฐ์ดํ ๊ฒ์ธ๋ฐ, ๋ธ๋ ์ฆ ํ์ค์นผ(1623-1662)์ ๋ฐ๋ผ ์ด๋ฆ ๋ถ์ฌ์ก๋ค.
๋จ์ํ ํํ๋ก, ํ์ค์นผ์ ์ผ๊ฐํ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค ์ ์๋ค.
- N๋ฒ์งธ ํ์๋ N๊ฐ์ ์๊ฐ ์๋ค.
- ์ฒซ ๋ฒ์งธ ํ์ 1์ด๋ค.
- ๋ ๋ฒ์งธ ํ๋ถํฐ, ๊ฐ ํ์ ์ ๋์ ๊ฐ์ 1์ด๊ณ , ๋๋จธ์ง ์์ ๊ฐ์ ๋ฐ๋ก ์ ํ์ ์ธ์ ํ ๋ ์์ ํฉ์ด๋ค.
์๋ฅผ ๋ค์ด, n=3์ด๋ฉด 3๋ฒ์งธ ํ์ 2๋ฒ์งธ ์๋ ์ ํ์ ์ธ์ ํ ๋ ์ (1๊ณผ 1)์ ๋ํด์ ๋ง๋ ๋ค.
n=6์ผ ๋, ํ์ค์นผ ์ผ๊ฐํ์ 6๋ฒ์งธ ํ์ 10์ 5๋ฒ์งธ ํ์ ์ธ์ ํ ๋ ์(4์ 6)์ ๋ํด์ ๊ตฌํ๋ค.
๊ฐ์ ๋ฐฉ์์ผ๋ก n=11์ผ ๋, ๋ค์๊ณผ ๊ฐ์ ํ์ค์นผ์ ์ผ๊ฐํ์ ๋ง๋ค ์ ์๋ค.
์ ์ n๊ณผ k๊ฐ ์ฃผ์ด์ก์ ๋ ํ์ค์นผ์ ์ผ๊ฐํ์ ์๋ n๋ฒ์งธ ํ์์ k๋ฒ์งธ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ด๋, ์ด ์๋ ์ดํญ๊ณ์ C(n-1,k-1)์์ ์ฃผ์ํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ n๊ณผ k๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฐจ๋ก๋ก ์ฃผ์ด์ง๋ค. ์ด ๋, 1 ≤ k ≤ n ≤ 30์ ๋ง์กฑํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ n๋ฒ์งธ ํ์ ์๋ k๋ฒ์งธ ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์ดํญ๊ณ์ ๊ณต๋ถํ๋ ๊ณ ๋ฉ๋ ๋ฐฐ์ด ๋ด์ฉ์ด๊ธด ํ์ง๋ง
arr[n][k] = arr[n-1][k-1] + arr[n][k]
์ด ์ ์๋ฅผ ์ด์ฉํ์ฌ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ใฒ
#include <iostream>
using namespace std;
int main () {
int n, k, arr[30][30];
cin >> n >> k;
arr[0][0] = 1;
for(int i=1; i<n; i++){
arr[i][0] = arr[i-1][0];
for(int j=1; j<i; j++){
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
arr[i][i] = arr[i-1][i-1];
}
cout << arr[n-1][k-1];
return 0;
}
'๐ฆ Chango > ๐ฃ EDOC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 11256๋ฒ: ์ฌํ (0) | 2021.11.16 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1058๋ฒ : ์น๊ตฌ (0) | 2021.11.10 |
[BOJ][C++] ๋ฐฑ์ค 2670๋ฒ: ์ฐ์๋ถ๋ถ์ต๋๊ณฑ (0) | 2021.11.03 |
[BOJ][C++] ๋ฐฑ์ค 2204๋ฒ: ๋๋น์ ๋๋ ์ฆ ํ ์คํธ (0) | 2021.11.02 |
[BOJ][C++] 9946๋ฒ: ๋จ์ด ํผ์ฆ (0) | 2021.11.02 |