문제링크
https://www.acmicpc.net/problem/15988
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import sys
input = sys.stdin.readline
d = [0] *1000001
d[1] = 1
d[2] = 2
d[3] = 4
t = int(input())
ns = []
for _ in range(t):
ns.append(int(input()))
k = max(ns)
for i in range(4,k+1):
d[i] = (d[i-1]+d[i-2]+d[i-3])%1000000009
for n in ns:
print(d[n])
|
cs |
POINT
- DP로 접근
- n번째 할 수 있는 행동 : +1, +2, +3
d[i] : 정수 i를 1, 2, 3의 합으로 나타내는 경우의 수
d[i] = d[i-1]+d[i-2]+d[i-3] (i>3)
ex) 4를 만드는 방법 d[4] = {(총합 3인 case,d[3]) 3 + 1} +{(총합 2인 case,d[2]) 2 + 2} +{(총합 1인 case,d[1]) 1 + 3}
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1309 동물원 파이썬 python (0) | 2022.02.19 |
---|---|
[백준] 1149 RGB거리 파이썬 python (0) | 2022.02.18 |
[백준] 2225 합분해 파이썬 python (0) | 2022.02.16 |
[백준] 14501 퇴사 파이썬 python (0) | 2022.02.15 |
[백준] 1699 제곱수의 합 파이썬 python (0) | 2022.02.14 |