์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.2] ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ

Yuuuki 2024. 8. 13. 14:16

 

โŽ 1์ฐจ ํ’€์ด

from itertools import product

def solution(n):
    num_list = [1, 2]
    count = 0

    for i in range(1, n + 1):
        for perm in product(num_list, repeat=i):
            if sum(perm) == n:
                count += 1
                continue

    return count % 1234567

๋ชจ๋“  ์กฐํ•ฉ์„ ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•œ product๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค๊ณ , ๊ทธ ํ•ฉ์ด n์ด ๋˜๋ฉด ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋ณด์•˜๋‹ค. 

์—ญ์‹œ๋‚˜, ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

 

์ด ๋ฌธ์ œ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ DP์ธ๋ฐ, ๋™์ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํ‘œ์œ ํ˜•์ธ ํ”ผ๋ณด๋‚˜์น˜์™€ ๊ฐ™์€ ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

n=1

(1)

n=2

(1,1)

(2)

n=3

(1,1,1)

(1,2)

(2,1)

n=4

(1,1,1,1)

(1,2,1)

(2,1,1)

(1,1,2)

(2,2)

 

โœ… ์ •๋‹ตํ’€์ด

def solution(n):
    answer=0
    dp1, dp2=1,1
    for i in range(2,n+1):
        dp1,dp2=dp1+dp2,dp1

    return dp1%1234567


n=4๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„๋•Œ, ์ด์ „๊ฐ’(n=3)์— 1์„ ์ถ”๊ฐ€, 2๋ฒˆ์งธ ์ด์ „๊ฐ’(n=2)์— 2๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ’์„ ๊ตฌํ•˜๋Š”๊ฒƒ์ด ์•„๋‹Œ ์นด์šดํŠธ๋ฅผ ๊ตฌํ•˜๋ฉด๋˜๊ธฐ ๋•Œ๋ฌธ์—  dp[n]=dp[n-1]+dp[n-2] ์ด๋Ÿฐ์‹์œผ๋กœ ์ ํ™”์‹์„ ๊ตฌํ•˜๋ฉด๋œ๋‹ค.

 

์นด์šดํŠธ๋งŒํ•˜๋ฉด๋˜๋ฏ€๋กœ, ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ณ€์ˆ˜๋กœ ์ˆซ์ž๋งŒ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.