3Level ๋ฉ€๋ฆฌ๋›ฐ๊ธฐ

๋ฌธ์ œ ๋งํฌ

๋งํฌํ…์ŠคํŠธ


< ๋ฌธ์ œ ํ•ต์‹ฌ >

  1. ๊ทœ์น™์„ฑ์„ ์ฐพ๊ธฐ

    โ†’ dp[0] = 1

    โ†’ dp[1] = 2

    โ†’ dp[2] = dp[0]+dp[1] = 1+2 = 3

    โ†’ dp[3] = dp[1]+dp[2] = 2+3 = 5

    โ†’ dp[n-1] = dp[n-3]+dp[n-2] = ?!


< ๋ฌธ์ œ ์•„์ด๋””์–ด >

  • dp ์‚ฌ์šฉ

    โ†’ 2*n ํƒ€์ผ๋ง๊ณผ ์œ ์‚ฌ ( ์ด ๋ฌธ์ œ๋Š” ํšจ์œจ์„ฑ ์กด์žฌ )


< ์ฝ”๋“œ >

1. dp ์‚ฌ์šฉ

def solution(n):
    dp = [1,2]
    for i in range(2, n):
        dp.append(dp[i - 1] + dp[i - 2])
    return dp[n - 1] % 1234567

print(solution(1))

< ๊ตฌํ˜„ ๋ฐฉ์‹ >

( ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ ์›๋ฆฌ )

1. dp ์‚ฌ์šฉ

  • dp = []๋ฅผ ์ƒ์„ฑ

  • ๊ทœ์น™์„ฑ ์ฐพ๊ธฐ

    โ†’ dp[0] = 1

    โ†’ dp[1] = 2

    โ†’ dp[2] = dp[0]+dp[1] = 1+2 = 3

    โ†’ dp[3] = dp[1]+dp[2] = 2+3 = 5

    โ†’ dp[n-1] = dp[n-3]+dp[n-2]

  • for๋ฌธ์„ ์ด์šฉ

    • 0,1 ๋ถ€๋ถ„์€ ์ด๋ฏธ ๋„ฃ์–ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— range(2,n)์œผ๋กœ ๋ฒ”์œ„ ์ง€์ •

    • ๊ฐ ๋ถ€๋ถ„์„ ๋Œ€์ž…ํ• ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ €๋Š” append๋ฅผ ์ด์šฉ

      โ†’ dp.append(dp[n-3]+dp[n-2])

  • n == 1์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋กœ ์„ค์ •

    โ†’ ๊ตณ์ด ํ•„์š”์—†์ง€๋งŒ ์“ธ๋ฐ์—†์ด ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•จ

  • dp[n-1] ๋ฆฌํ„ด

    โ†’ ์ฐพ๊ณ ์žํ•˜๋Š” n๋ถ€๋ถ„์˜ ์ธ๋ฑ์Šค๋Š” n-1์ด๊ธฐ ๋•Œ๋ฌธ์—


< ๊ฒฐ๊ณผ >

1. dp ์‚ฌ์šฉ

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ