๐Ÿ“ฆ Chango/๐Ÿฃ EDOC

[BOJ][C++] 16395๋ฒˆ: ํŒŒ์Šคํ‚ฌ์˜ ์‚ผ๊ฐํ˜•

์„ ๋‹ฌ 2021. 11. 3. 08:34
๋ฐ˜์‘ํ˜•

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

 

16395๋ฒˆ: ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•

ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์€ ์ดํ•ญ๊ณ„์ˆ˜๋ฅผ ์‚ผ๊ฐํ˜• ํ˜•ํƒœ๋กœ ๋ฐฐ์—ดํ•œ ๊ฒƒ์ธ๋ฐ, ๋ธ”๋ ˆ์ฆˆ ํŒŒ์Šค์นผ(1623-1662)์„ ๋”ฐ๋ผ ์ด๋ฆ„ ๋ถ™์—ฌ์กŒ๋‹ค. ๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋กœ, ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. N๋ฒˆ์งธ ํ–‰

www.acmicpc.net

 

๋ฌธ์ œ

ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์€ ์ดํ•ญ๊ณ„์ˆ˜๋ฅผ ์‚ผ๊ฐํ˜• ํ˜•ํƒœ๋กœ ๋ฐฐ์—ดํ•œ ๊ฒƒ์ธ๋ฐ, ๋ธ”๋ ˆ์ฆˆ ํŒŒ์Šค์นผ(1623-1662)์„ ๋”ฐ๋ผ ์ด๋ฆ„ ๋ถ™์—ฌ์กŒ๋‹ค.

๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋กœ, ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  1. N๋ฒˆ์งธ ํ–‰์—๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
  2. ์ฒซ ๋ฒˆ์งธ ํ–‰์€ 1์ด๋‹ค.
  3. ๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ, ๊ฐ ํ–‰์˜ ์–‘ ๋์˜ ๊ฐ’์€ 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;
}

 

 

๋ฐ˜์‘ํ˜•