#문제링크
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
#나의풀이
import sys
if __name__ == '__main__':
T = int(sys.stdin.readline())
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):
number = int(sys.stdin.readline())
print(dp[number])
#해설
계단오르기와 비슷한 전형적인 DP문제가 아닐까 싶다.
4를 구한다고 했을때 4를 쪼갠다고 생각하면 1 + dp[3], 2+ dp[2], 3 + dp[1]으로 3가지 방법으로 나눌수가 있는데 이를 경우의 수로 구면 dp[3] + dp[2] + dp[1]만 더해주면 되므로 점화식이 dp[i-3] + dp[i-2] + dp[i-1]로 되는걸 확인할 수 있다.
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 9461 파도반 수열 (0) | 2022.06.10 |
---|---|
[백준/파이썬] 9375 패션왕 신해빈 (0) | 2022.06.10 |
[백준/파이썬] 2606 바이러스 (0) | 2022.06.10 |
[백준/파이썬] 2579 계단 오르기 (0) | 2022.06.09 |
[백준/파이썬] 1463 1로 만들기 (0) | 2022.06.08 |