정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
import sys
input = sys.stdin.readline
T=int(input())
dp=[0]*11
dp[1]=1
dp[2]=2
dp[3]=4
start=4
for _ in range(T):
n=int(input())
if dp[n]!=0:
print(dp[n])
continue
for i in range(start,n+1):
dp[i]=dp[i-3]+dp[i-2]+dp[i-1]
start=n+1
print(dp[n])
정수i를 만드는 경우의 수는 i-3을 만드는 경우들에 3을 추가하는 것과 i-2를 만드는 경우들에 2를 추가하는 것과 i-1을 만드는 경우들에 1를 추가하는 것이다.
따라서 dp[i]=dp[i-3]+dp[i-2]+dp[i-1] 이다