๊ธฐ๋ก๋ฐฉ

BOJ_9461 : ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด ๋ณธ๋ฌธ

CodingTest/Python

BOJ_9461 : ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด

Soom_1n 2022. 9. 3. 02:40

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

9461๋ฒˆ: ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด

์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ผ๊ฐํ˜•์ด ๋‚˜์„  ๋ชจ์–‘์œผ๋กœ ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ์ฒซ ์‚ผ๊ฐํ˜•์€ ์ •์‚ผ๊ฐํ˜•์œผ๋กœ ๋ณ€์˜ ๊ธธ์ด๋Š” 1์ด๋‹ค. ๊ทธ ๋‹ค์Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ •์‚ผ๊ฐํ˜•์„ ๊ณ„์† ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‚˜์„ ์—์„œ ๊ฐ€์žฅ ๊ธด ๋ณ€์˜

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ๊ทœ์น™์ฒ˜๋Ÿผ ํšŒ์˜ค๋ฆฌ ๋ชจ์–‘์œผ๋กœ ์‚ผ๊ฐํ˜•์ด ๋Š˜์–ด๊ฐˆ๋•Œ ๊ฐ€์žฅ ํฐ ๋ณ€์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.
  • dp[0] ~ dp[9] ๊นŒ์ง€์˜ 10๊ฐœ ๊ฐ’์€ ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์กŒ๋‹ค.
  • ์ธ๋ฑ์Šค 3(์ž…๋ ฅ ๊ฐ’ 4)๋ถ€ํ„ฐ ์ ํ™”์‹์ด ์ ์šฉ๋œ๋‹ค.
    • P(N) = P(N-2) + P(N-3)

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

dp = [1,1,1,2,2,3,4,5,7,9]

for _ in range(int(input())):
    n = int(input())

    if n <= len(dp):
        print(dp[n-1])
    else:
        for _ in range(n-len(dp)):
            dp.append(dp[-2]+dp[-3])
        print(dp[n-1])

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • dp ๋ฆฌ์ŠคํŠธ์— ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ 10๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์‹œ์ž‘ํ–ˆ๋‹ค.
  • ์ฃผ์–ด์ง„ ๊ฐ’(n)์ด dp ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋‹ค๋ฉด(์—†๋Š” ์ธ๋ฑ์Šค๋ผ๋ฉด), ๊ทธ ์ฐจ์ด๋งŒํผ ๊ณ„์‚ฐํ•ด์„œ dp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Š˜๋ ค์ค€๋‹ค.
  • ํ•ด๋‹น dp ๋ฆฌ์ŠคํŠธ ์ธ๋ฑ์Šค ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋‹ต์•ˆ์„ ์ฐพ์•„๋ณด์ง€ ์•Š๊ณ  ํ’€์ดํ•œ๊ฑฐ๋ผ ์ˆ˜ํ•™์  ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ์ข€ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค.
  • ๊ทธ๋ƒฅ ๊ทœ์น™์ฐพ๊ธฐ๊ฐ™์€ ๋ฌธ์ œ์˜€๋Š”๋ฐ dp ๋ฌธ์ œ๋“ค์„ ๊ฐ„๋‹จํžˆ ํ’€์„๋• ์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
  • dp ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅ์˜ ์ธ๋ฑ์Šค๋ฅผ -1 ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ, ๊ทธ๊ฑธ ํ•˜๋‚˜๋งŒ ๋ฐ”๊ฟ”์ค˜์„œ 1ํšŒ ํ‹€๋ ธ๋‹ค.

728x90