문제
코드
My answer
import sys
input=sys.stdin.readline
num,test=[1,2,3],[]
t=int(input())
for i in range(t):
test.append(int(input()))
dp=[0 for i in range(max(test)+1)]
dp[0]=1
for i in range(len(num)):
for j in range(0,max(test)+1):
if(j-num[i]>=0):
dp[j]+=dp[j-num[i]]
for i in test:
if(i==0):print(0)
else:print(dp[i])
Another answer
dp= [1]*10001
for i in range(2,10001):
dp[i] += dp[i-2
for i in range(3,10001):
dp[i] += dp[i-3]
for _ in range(int(input())):
print(dp[int(input())])
풀이
이런문제는 다 똑같은 방법으로 푸는 것 같아서 외워야 할 것 같다. 코인문제랑 아예 똑같은 문제였다. 아래코드는 나와 똑같은 방법인데 이 문제는 정해진 수 1,2,3만 조합해서 만들면되서 저렇게 따로따로 하나씩 만들어줘도 된다. 내 코드는 1,2,3말고 딴 숫자로 바꾸려면 num리스트안의 숫자만 바꾸면 바로 돌릴 수가 있다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #3568- isharp (0) | 2022.01.04 |
---|---|
[Python] 백준 #1495- 기타리스트 [try_again] (0) | 2022.01.03 |
[Python] 백준 #2294- 동전 2 [try_again] (0) | 2022.01.03 |
[Python] 백준 #2293- 동전 1 (0) | 2022.01.02 |
[Python] 백준 #1890- 점프 (0) | 2021.12.30 |