๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
4๏ธโƒฃ Python/Problem Solving

[Python Algorithm] ์ด์นœ์ˆ˜ BOJ #2193

by seolhee2750 2022. 2. 1.
๋ฌธ์ œ

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

 

2193๋ฒˆ: ์ด์นœ์ˆ˜

0๊ณผ 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์ง„์ˆ˜ ์ค‘ ํŠน๋ณ„ํ•œ ์„ฑ์งˆ์„ ๊ฐ–๋Š” ๊ฒƒ๋“ค์ด ์žˆ๋Š”๋ฐ, ์ด๋“ค์„ ์ด์นœ์ˆ˜(pinary number)๋ผ ํ•œ๋‹ค. ์ด์นœ์ˆ˜๋Š” ๋‹ค์Œ์˜ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•œ๋‹ค. ์ด์นœ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š

www.acmicpc.net

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
n = int(input())

if n == 1: print(1)
elif n == 2: print(1)
else:
    result = [1, 1]  # n์ด 0์ผ ๋•Œ, 1์ผ ๋•Œ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅ
    for i in range(2, n):
        result.append(result[i-2] + result[i-1])
    print(result[-1])

๐Ÿ‘‰ DP ๋ฌธ์ œ๋กœ, ์ ํ™”์‹ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋จ !

p(n) = p(n-2) + p(n-1) ์˜ ์ ํ™”์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์ด์— ๋งž๊ฒŒ ํ’€์–ด์ฃผ์—ˆ๋‹ค.

(์ง์ ‘ ๊ตฌํ•ด๋ณด๋ฉด N์ด 6์ผ ๋•Œ 8๊ฐœ, N์ด 7์ผ ๋•Œ 13๊ฐœ, N์ด 8์ผ ๋•Œ 21๊ฐœ์˜ ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ง„๋‹ค.) 

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ์ „ํ˜•์ ์ธ ์ ํ™”์‹ ๋ฌธ์ œ์˜€๊ณ , ์‰ฝ๊ฒŒ ์œ ์ถ”ํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋Œ“๊ธ€