ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

2225๋ฒˆ: ํ•ฉ๋ถ„ํ•ด

์ฒซ์งธ ์ค„์— ๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 N๊นŒ์ง€ ์ˆซ์ž ์ค‘ K๊ฐœ๋ฅผ ์ด์šฉํ•ด์„œ N์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ’€๋ฉด ์ข‹์„์ง€ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€, ๋‹จ์ˆœํžˆ N์ด 1์ธ ๊ฒฝ์šฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ K๊ฐ€ ์ฆ๊ฐ€ํ•  ๊ฒฝ์šฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค.

 

  • N์ด 1์ธ ๊ฒฝ์šฐ
    • K์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜
      • 1 : [1] → 1๊ฐ€์ง€
      • 2 : [0 + 1], [1 + 0] → 2๊ฐ€์ง€
      • 3 : [0 + 0 + 1], [0 + 1 + 0], [1 + 0 + 0]  → 3๊ฐ€์ง€
      • 4 : 4๊ฐ€์ง€
  • N์ด 2์ธ ๊ฒฝ์šฐ
    • K์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜
      • 1 : [2] → 1๊ฐ€์ง€
      • 2 : [0 + 2], [1 + 1], [2 + 0] → 3๊ฐ€์ง€
      • 3 : [0 + 0 + 2], [0 + 2 + 0], [2 + 0 + 0], [0 + 1 + 1], [1 + 1 + 0], [1 + 0 + 1] → 6๊ฐ€์ง€
      • 4 : 10๊ฐ€์ง€

 ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ผ์ผ์ด ๋‹ค ์ฐพ์•„๋ณด๋Š” ๊ฒƒ์€ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, N์ด 1, 2์ธ ๊ฒฝ์šฐ๋ฅผ ๋‚˜์—ดํ•ด ๋ณด๋ฉด, ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ผ์ผ์ด ์ฐพ์ง€ ์•Š๋”๋ผ๋„ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

N K = 1 K = 2 K = 3 K = 4  K = 5
1 1 2 3 4 5
2 1 3 6 10 ?

 

 ์œ„์˜ ํ‘œ๋ฅผ ๋ณด๋ฉด N - 1์ผ ๋•Œ K + 1์ธ ๊ฒฝ์šฐ์˜ ์ˆ˜์™€ N์ผ ๋•Œ K์ธ ๊ฒฝ์šฐ์˜ ์ˆ˜์˜ ํ•ฉ์ด ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋Š” ์ ํ™”์‹์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ N์ด 2์ธ ๊ฒฝ์šฐ์— K๊ฐ€ 5์ธ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 5 + 10์œผ๋กœ 15๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin


if __name__ == '__main__':
    n, k = map(int, stdin.readline().split())
    dp = [[0] * 201 for _ in range(201)]
    divisor = 1000000000

    for i in range(k + 1):
        dp[0][i] = 1

    for i in range(1, n + 1):
        for j in range(1, k + 1):
            dp[i][j] = (dp[i][j - 1] + dp[i - 1][j]) % divisor

    print(dp[n][k])
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€