def ccount(n):
dp=[0]*(n+1)
dp[0]=1
if n>=1:
dp[1]=1
if n>=2:
dp[2]=2
if n>=3:
dp[3]=4
for i in range(4, n+1):
dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
return dp[n]
n=int(input())
arr= [int(input()) for _ in range(n)]
for i in arr:
print(ccount(i))
def ccount(n, memo):
if n<0:
return 0
if n==0:
return 1
if n in memo:
return memo[n]
memo[n]=ccount(n-1, memo)+ccount(n-2, memo)+ccount(n-3, memo)
return memo[n]
n=int(input())
arr=[int(input()) for _ in range(n)]
for i in arr:
print(ccount(i, {}))
위에꺼가 약간 더 빠르다
'코테 공부' 카테고리의 다른 글
| 백준 9935 문자열 폭발(python) (0) | 2024.11.19 |
|---|---|
| 백준 2579 계단오르기(python) (0) | 2024.11.18 |
| 백준 1463 1로 만들기(python) (0) | 2024.11.18 |
| 백준 7569 토마토(python) (0) | 2024.11.17 |
| 백준 2644번 촌수계산(python) (0) | 2024.11.17 |