import sys
input = sys.stdin.readline
def BOJ9095() :
T = int(input())
dp = [0] * 12
dp[1] = 1
dp[2] = 2
dp[3] = 4
for i in range(4, 12) :
dp[i] = dp[i-3] + dp[i-2] + dp[i-1]
for _ in range(T) :
print(dp[int(input())])
BOJ9095()
접근 방법 :
dp 문제이다.
4를 만드는 경우의 수부터 접근 해보자.
4는
1. 1을 만드는 경우의 수들에서 3하나를 추가해주면 된다
2. 2를 만드는 경우의 수들에서 2하나를 추가해주면 된다
3. 3을 만드는 경우의 수들에서 1하나를 추가해주면 된다
4를 만드는 경우의 수는 1을 만드는 경우의 수 + 2를 만드는 경우의 수 + 3을 만드는 경우의 수 이다.
dp[i] = dp[i-3] + d[i-2] + dp[i-1] 이런 점화식이 만들어지게 되므로 이걸 그대로 적용하면 된다
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
'알고리즘' 카테고리의 다른 글
토마토 [백준 7576] - python (0) | 2022.01.27 |
---|---|
평균은 넘겠지[백준 - 4344] - python (0) | 2022.01.15 |
패션왕 신해빈 (0) | 2022.01.13 |
과제 [백준 - 13904] - python (0) | 2022.01.11 |
그룹 단어 체커 [백준 - 1316] - python (0) | 2022.01.10 |