DHistory
[Baekjoon] DP - 15990 1, 2, 3 더하기 5 본문
문제
풀이
"""
1 = 1
2 = 2
3 = 1 + 2
2 + 1
3
4 = 1 + 2 + 1 (3을 만들 수 있는 경우 중 2개)
1 + 3
3 + 1 (1을 만들 수 있는 경우 중 1개)
5 = 1 + 3 + 1
2 + 1 + 2
3 + 2
2 + 3
6 = 2 + 1 + 2 + 1
2 + 3 + 1
3 + 2 + 1
1 + 2 + 1 + 2
1 + 3 + 2
3 + 1 + 2
1 + 2 + 3
2 + 1 + 3
"""
import sys
MOD = 1000000009
t = int(sys.stdin.readline().rstrip())
numbers = []
for _ in range(t):
numbers.append(int(sys.stdin.readline().rstrip()))
d = [(0, 0, 0)] * 100001
def solution(numbers):
d[1] = (1, 0, 0)
d[2] = (0, 1, 0)
d[3] = (1, 1, 1)
for i in range(4, 100001):
d[i] = (
(d[i - 1][1] + d[i - 1][2]) % MOD,
(d[i - 2][0] + d[i - 2][2]) % MOD,
(d[i - 3][0] + d[i - 3][1]) % MOD
)
return [sum(d[n]) % MOD for n in numbers]
print(*solution(numbers), sep='\n')
채점 결과
'Computer Science > Algorithm' 카테고리의 다른 글
[Baekjoon] DP - 18353 병사 배치하기 (0) | 2023.09.26 |
---|---|
[Baekjoon] DP - 11060 점프 점프 (0) | 2023.09.25 |
[Baekjoon] DP - 15988 1, 2, 3 더하기 3 (0) | 2023.09.25 |
[Baekjoon] DP - 11722 가장 긴 감소하는 부분 수열 (0) | 2023.09.25 |
[Baekjoon] DP - 1699 제곱수의 합 (0) | 2023.09.25 |