
DP문제에 익숙해지는 중이다. 처음에 봤던 나는 "이걸 어떻게 다 하나씩 구하지🫡 조합으로 풀어야 하나... 답이 없는데" 이러고 있었다.
| DP | #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| DP[1] | 1 | ||||||||||
| DP[2] | 1+1 | ||||||||||
| - | 2 | ||||||||||
| DP[3] | 1+1+1 | 2+1 | |||||||||
| - | 1+2 | ||||||||||
| - | 3 | ||||||||||
| DP[4] | 1+1+1+1 | 2+1+1 | 1+2+1 | 3+1 | |||||||
| - | 1+1+2 | 2+2 | |||||||||
| - | 1+3 | 
DP[2] = (DP[1] + 1) = 1이 되는 방법 + 1
DP[3] = (DP[2] + 1) + (DP[1]+2) = (2가 되는 방법 + 1) + (1이 되는 방법 + 2) = 3이 되는 방법
DP[4] = (DP[3] + 1) + (DP[2] + 2) + (DP[1]+3)
import sys
input = sys.stdin.readline
DP = [0] * 11
DP[1], DP[2], DP[3] = 1, 2, 4
testcases = int(input().rstrip())
def getWays(target: int) -> int:
    for index in range(4, target+1):
        DP[index] = DP[index-1]+DP[index-2]+DP[index-3]
    return DP[target]
for _ in range(testcases):
    num = int(input().rstrip())
    print(getWays(num))