[๋ฐฑ์ค 9095๋ฒ] [๐ฅ3] 1, 2, 3 ๋ํ๊ธฐ (python)
๋ฌธ์
์ ์ 4๋ฅผ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์ด 7๊ฐ์ง๊ฐ ์๋ค. ํฉ์ ๋ํ๋ผ ๋๋ ์๋ฅผ 1๊ฐ ์ด์ ์ฌ์ฉํด์ผ ํ๋ค.
- 1+1+1+1
- 1+1+2
- 1+2+1
- 2+1+1
- 2+2
- 1+3
- 3+1
์ ์ n์ด ์ฃผ์ด์ก์ ๋, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ ์ n์ด ์ฃผ์ด์ง๋ค. n์ ์์์ด๋ฉฐ 11๋ณด๋ค ์๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
4
7
10
์์ ์ถ๋ ฅ 1
7
44
274
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋งํ๋ ๋ถ๋ถ
dp[n] = dp[n-3] + dp[n-2] + dp[n-1] ์ด๋ผ๋ ์ ํ์์ด ๋์จ๋ค.
์ฝ๋
ver(1) - def ์ฌ์ฉ
def dp(k):
if k == 1:
return 1
elif k == 2:
return 2
elif k == 3:
return 4
else:
return dp(k-3) + dp(k-2) + dp(k-1)
n = int(input())
for i in range(n):
print(dp(int(input())))
ver(2) - dp ์ฌ์ฉ
n = int(input())
for i in range(n):
k = int(input())
if k == 1:
print(1)
elif k == 2:
print(2)
elif k == 3:
print(4)
else:
dp = [0] * 11
dp[1] = 1
dp[2] = 2
dp[3] = 4
for j in range(4,11):
dp[j] = dp[j-1]+dp[j-2]+dp[j-3]
print(dp[k])
๋๊ธ๋จ๊ธฐ๊ธฐ