[ 2023-02-24 ๐Ÿ‘ง๐Ÿป TIL ]

Burkeyยท2023๋…„ 2์›” 24์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
41/157

๋ฐฑ์ค€ 11051๋ฒˆ

ํ’€์ด์ฝ”๋“œ

import sys

input = sys.stdin.readline

n, k = map(int, input().split())
dp = [[1] for i in range(n+1)] #์ฒ˜์Œ์—๋Š” ๋ฌด์กฐ๊ฑด 1๋กœ ์‹œ์ž‘ํ•˜๊ธฐ์— 1์„ ๋„ฃ์–ด์คŒ

dp[1].append(1)  # ํ˜„์žฌ dp == [[1], [1,1]] 

for i in range(2, n+1):
    for j in range(1, i+1):
        if j == i:
            dp[i].append(1) # ๋งˆ์ง€๋ง‰์ด ๋ฌด์กฐ๊ฑด 1๋กœ ๋๋‚˜๊ธฐ์— 1์„ ๋„ฃ์–ด์คŒ
        else:
            dp[i].append(dp[i-1][j-1] + dp[i-1][j]) 
            # ์ด์ „ ํ–‰(i-1)์˜ ์ด์ „ ์—ด(j-1)๊ณผ ์ด์ „ ํ–‰์˜(i-1) ํ˜„์žฌ ์—ด(j)์˜ ๊ฐ’์ด ๋”ํ•œ ๊ฐ’์ด 
       
## print(dp[n][k] % 10007)

๋‘ ์ž…๋ ฅ๋˜๋Š” N, K์˜ ์ดํ•ญ ๊ณ„์ˆ˜๋ฅผ 10007๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ์žฌ๊ท€๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค ํ–ˆ์œผ๋‚˜, ๋ฌธ์ œ์—์„œ ์ œ๊ณต๋˜๋Š” N๊ณผ K์˜ ๋ฒ”์œ„๊ฐ€ 1000๊นŒ์ง€ ์ œ๊ณต๋˜๊ธฐ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์—ฌ ํ’€์ด๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๊ณ  DP(๋™์  ๊ณ„ํš๋ฒ•)์•Œ๊ณ ๋ฆฌ์ฆ˜์„
ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜• ๊ณต์‹์— ์ ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•

DP(๋™์  ๊ณ„ํš๋ฒ•)

DP๋Š” ์ƒ์œ„ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜์œ„ ๊ฐœ๋…์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ์ƒ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์œ„์— ๋ฌธ์ œ์—์„œ๋Š” ํ•˜์œ„ ๋ฌธ์ œ (์œ„์—์„œ ์•„๋ž˜๋กœ 1~n+1๊นŒ์ง€์˜ ์ค„์ด ์žˆ์„ ๋•Œ n-1์ค„์— k-1, k์˜ ์œ„์น˜) ์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์ˆ˜๋ฅผ ๋”ํ•จ์œผ๋กœ์„œ ์ƒ์œ„๋ฅผ ๋ฌธ์ œ (n์ค„์˜ k์˜ ๊ฐ’) ์„ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ๊ณผ ๋์€ 1์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” (n-1, k-1) + (n-1, k) = (n, k)์ด๋ผ๋Š”
์ด์ „์˜ ๊ฐ’์„ ์ฐธ์กฐํ•˜์—ฌ ํ˜„์žฌ์˜ ๊ฐ’์„ ์•Œ์•„๋‚ด์•ผ ํ•˜๊ธฐ์— DP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€