문제풀이/DP

[CodingTest] BOJ9095 1,2,3 더하기 ( DP ) With 파이썬

IT록흐 2023. 6. 14. 10:03
반응형
 

9095번: 1, 2, 3 더하기

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

www.acmicpc.net

 

 

◎ 문제풀이

 

1,2,3 기저조건이 있고 목표값까지 가는 경우의 수를 구하는 문제이니 DP문제이다.  

 

 

 

 

 

1,2,3으로 10을 구하는 경우의 수를 d(10)이라고 하자.  10을 구하는 사건은 3가지 사건이 있다.

 

사건 ① : 9 + 1

사건 ② : 8 + 2

사건 ③ : 7 + 3

 

3가지 사건은 모두 독립사건이다. 그러므로 d(10) = d(9) + d(8) + d(7)이 성립된다.  dp는 기저조건으로 독립사건을 구하여 점화식을 도출하는 것이 중요하다. 

 

 

◎ 코드

n = int(input())

def dp(value) :
  d = [0]*11 
  d[1],d[2],d[3] = 1,2,4
  for i in range(4,value+1) :
    d[i] = d[i-3]+d[i-2]+d[i-1] 
  return d[value]
  
for _ in range(n) :
  print(dp(int(input())))

 

 

 

 

반응형