728x90
Problem)
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
Solution)
D[N] = D[N-1] + D[N-2] + D[N-3] 의 결과가 된다.
이때, D[0] 을 살펴봐야하는데, D[0]을 정의해야 편하게 코딩할 수 있다.
수를 0개 사용하는 경우는 합이 없는 경우 이므로 아무것도 사용하지 않는 경우, 1가지 이다. 따라서 D[0] = 1로 정의한다.
Answer)
d = [0]*11
d[0] = 1
for i in range(1, 11):
if i-1 >= 0:
d[i] += d[i-1]
if i-2 >= 0:
d[i] += d[i-2]
if i-3 >= 0:
d[i] += d[i-3]
t = int(input())
for _ in range(t):
n = int(input())
print(d[n])
728x90
'코딩테스트' 카테고리의 다른 글
다이나믹 프로그래밍 - 백준 15990 [Python] (0) | 2021.08.05 |
---|---|
다이나믹 프로그래밍 - 백준 11052 [Python] (0) | 2021.08.04 |
다이나믹 프로그래밍 - 백준 11726 [Python] (0) | 2021.08.04 |
다이나믹 프로그래밍 - 백준 1463 [Python] (0) | 2021.08.03 |
브루트 포스 - 백준 15650 [Python] (0) | 2021.07.29 |
댓글