알고리즘/백준

[백준] 9095 - 1, 2, 3 더하기 (Python)

셰욘 2023. 11. 21. 19:51
728x90

문제 설명

https://www.acmicpc.net/problem/9095

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net


문제 풀이

점화식 구하는 것에 익숙해지려고 쉬운 DP 문제부터 푸는 중 .. 

 

예시에 나온 D[4]를 봤을 때

1 + 1 + 1 + 1, 1 + 2 + 1, 2 + 1 + 1, 3 + 1    => 3을 1, 2, 3의 합으로 나타내는 법 + 1

1 + 1 + 2, 2 + 2      => 2를 1, 2, 3의 합으로 나타내는 법 + 2

1 + 3       => 1을 1, 2, 3의 합으로 나타내는 법 + 3

 

점화식 : D[i] = D[i - 1] + D[i - 2] + D[i - 3]

초기값 : D[1] = 1, D[2] = 2, D[3] = 4

 

 

N이 입력될 때마다 매번 구해주기보다는

먼저 값을 다 구한 다음에 N이 들어오면 출력해주는 것이 훨씬 효율적이다

d = [0] * 12
d[1] = 1
d[2] = 2
d[3] = 4
for i in range(4, 12):
    d[i] = d[i - 1] + d[i - 2] + d[i - 3]

T = int(input())

for tc in range(T):
    n = int(input())
    print(d[n])

 

728x90