1 ๋ถ„ ์†Œ์š”

๋ฐฑ์ค€ ์‚ฌ์ดํŠธ ๋งํฌ

๋ฌธ์ œ

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

ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด P(N)์€ ๋‚˜์„ ์— ์žˆ๋Š” ์ •์‚ผ๊ฐํ˜•์˜ ๋ณ€์˜ ๊ธธ์ด์ด๋‹ค. P(1)๋ถ€ํ„ฐ P(10)๊นŒ์ง€ ์ฒซ 10๊ฐœ ์ˆซ์ž๋Š” 1, 1, 1, 2, 2, 3, 4, 5, 7, 9์ด๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, P(N)์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

image

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 100)

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค P(N)์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

2
6
12

์˜ˆ์ œ ์ถœ๋ ฅ 1

3
16

๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ง‰ํ˜”๋˜ ๋ถ€๋ถ„

P(n) = P(n-2) + P(n-3) ๋‹จ, n >= 4์ผ ๋•Œ๋งŒ ํ•ด๋‹น ์ ํ™”์‹์ด ์„ฑ๋ฆฝํ•˜๋ฉฐ, ์ดˆ๊ธฐ ๊ฐ’์œผ๋กœ P(1) = P(2) = P(3) = 1์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ๋ฌธ์ œ์—์„œ๋Š” ์ฃผ์–ด์ง„ ์ ํ™”์‹์„ ์ด์šฉํ•˜์—ฌ 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ k์— ๋Œ€ํ•ด P(k)๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋˜๋Š”, P(n) = P(n-5) + P(n-1)์ด๋ผ๋Š” ์ ํ™”์‹์ด n์ด 6์ด์ƒ์ผ๋•Œ ๊ฐ€๋Šฅ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ

ver(1)

n = int(input())  # ์ž…๋ ฅ๊ฐ’ n์„ ๋ฐ›๋Š”๋‹ค.
dp = [0] * 101  # dp ํ…Œ์ด๋ธ”์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. 1~100๊นŒ์ง€๋งŒ ๊ตฌํ•˜๋ฏ€๋กœ 101๊ฐœ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
dp[1] = dp[2] = dp[3] = 1  # ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค. ์ฆ‰, dp[1], dp[2], dp[3]์„ 1๋กœ ์„ค์ •ํ•œ๋‹ค.
for i in range(4, 101):  # 4๋ถ€ํ„ฐ 100๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
    dp[i] = dp[i-2] + dp[i-3]  # ์ ํ™”์‹์„ ์ด์šฉํ•˜์—ฌ dp[i]๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

for _ in range(n):  # ์ž…๋ ฅ๊ฐ’ n๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
    k = int(input())  # dp ํ…Œ์ด๋ธ”์—์„œ k๋ฒˆ์งธ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด k๊ฐ’์„ ๋ฐ›๋Š”๋‹ค.
    print(dp[k])  # dp[k] ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

ver(2)

n = int(input()) # ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜ ์ž…๋ ฅ
dp = [1] * 101 # ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด ์ดˆ๊ธฐํ™”
dp[4] = 2 # dp[4]์™€ dp[5]๋Š” ์˜ˆ์™ธ๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •
dp[5] = 2
for _ in range(n):
    k = int(input()) # ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐ’์„ ์ž…๋ ฅ
    for i in range(6,k+1):
        dp[i] = dp[i-5] +dp[i-1] # ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด ์ ํ™”์‹
    print(dp[k]) # k๋ฒˆ์งธ ์ˆ˜์—ด ๊ฐ’ ์ถœ๋ ฅ

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ