반응형
◎ 문제풀이
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())))
반응형
'문제풀이 > DP' 카테고리의 다른 글
[PS] BOJ159990 1,2,3 더하기 5 ( DP ) With 파이썬 (0) | 2023.06.27 |
---|---|
[CodingTest] BOJ11052 카드 구매하기 ( DP ) With Python (0) | 2023.06.16 |
[CodingTest] 효율적인 화폐구성 ( dp ) (0) | 2023.05.31 |
[CodingTest] 바닥공사 ( dp ) (0) | 2023.05.30 |
[CodingTest] 개미전사 ( DP ) (0) | 2023.04.20 |