๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

[๋ฐฑ์ค€] [Python] 11726๋ฒˆ_2xN ํƒ€์ผ๋ง_๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Dbswnstjd 2022. 10. 11. 19:17

๋ฌธ์ œ

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

 

11726๋ฒˆ: 2×n ํƒ€์ผ๋ง

2×n ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ 1×2, 2×1 ํƒ€์ผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ 2×5 ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ ์ฑ„์šด ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ด๋‹ค.

www.acmicpc.net

 

ํ’€์ด

# ๋ฐฑ์ค€ 11726๋ฒˆ ๋ฌธ์ œ - 2xN ํƒ€์ผ๋ง 
n = int(input())
d =  [0] * 1001
d[1] = 1
d[2] = 2

for i in range(3, n+1):
    d[i] = d[i-1] + d[i-2]

print(d[n]%10007)

์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ์œ„ํ•ด ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 

์ฒ˜์Œ d ๋ฐฐ์—ด์„ n์˜ ๊ฐฏ์ˆ˜๋งŒํผ ์„ ์–ธํ•ด์ฃผ๊ณ  ์ ํ™”์‹์„ ๊ตฌํ•˜๋ ค๊ณ  ํ•˜์˜€๋‹ค. 

ํƒ€์ผ ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ ์นธ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋ ์ˆ˜๋ก

๋Š˜์–ด๋‚œ ํƒ€์ผ์— ๋Œ€ํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜ + ๊ทธ ์ „ ํƒ€์ผ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.  

๊ทธ ๊ฒฐ๊ณผ d[i] = d[i-1] + d[i-2] ๋ผ๋Š” ์ ํ™”์‹์„ ๊ตฌํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ์ด๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. 

i๊ฐ€ 1๊ณผ 2์ผ ๊ฒฝ์šฐ๋Š” ๋ช…ํ™•ํ•˜๊ธฐ ๋–„๋ฌธ์— ์ฒ˜์Œ์— ์„ ์–ธ์„ ํ•ด์ฃผ์—ˆ๋‹ค.