[๋ฐฑ์ค 9461๋ฒ] [๐ฅ3] ํ๋๋ฐ ์์ด (python)
๋ฌธ์
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๊ฐํ์ด ๋์ ๋ชจ์์ผ๋ก ๋์ฌ์ ธ ์๋ค. ์ฒซ ์ผ๊ฐํ์ ์ ์ผ๊ฐํ์ผ๋ก ๋ณ์ ๊ธธ์ด๋ 1์ด๋ค. ๊ทธ ๋ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ ์ผ๊ฐํ์ ๊ณ์ ์ถ๊ฐํ๋ค. ๋์ ์์ ๊ฐ์ฅ ๊ธด ๋ณ์ ๊ธธ์ด๋ฅผ k๋ผ ํ์ ๋, ๊ทธ ๋ณ์ ๊ธธ์ด๊ฐ k์ธ ์ ์ผ๊ฐํ์ ์ถ๊ฐํ๋ค.
ํ๋๋ฐ ์์ด P(N)์ ๋์ ์ ์๋ ์ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด์ด๋ค. P(1)๋ถํฐ P(10)๊น์ง ์ฒซ 10๊ฐ ์ซ์๋ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9์ด๋ค.
N์ด ์ฃผ์ด์ก์ ๋, P(N)์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ 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๋ฒ์งธ ์์ด ๊ฐ ์ถ๋ ฅ
๋๊ธ๋จ๊ธฐ๊ธฐ