문제
풀이
유사한 문제들은 많이 풀어보았다.
1, 2, 3을 만들 수 있는 경우의 수를 dp테이블에 베이스로 저장해둔다.
점화식은 다음과 같다.
dp[n] = dp[n-1] + dp[n-2] + dp[n-3] (3 <= n <= 11)
코드
import sys
t = int(sys.stdin.readline().strip())
dp = [0 for _ in range(12)]
dp[0:3] = [1, 1, 2]
for i in range(3, 12):
for j in range(1, 4):
dp[i] += dp[i-j]
for _ in range(t):
n = int(sys.stdin.readline().strip())
print(dp[n])
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 7569 - 토마토 [Python(파이썬)] (0) | 2021.02.03 |
---|---|
[백준] 1890 - 점프 [Python(파이썬)] (0) | 2021.02.03 |
[백준] 2193 - 이친수 [Python(파이썬)] (0) | 2021.02.01 |
[백준] 11054 - 가장 긴 바이토닉 부분 수열 [Python(파이썬)] (0) | 2021.01.29 |
[백준] 11055 - 가장 큰 증가 부분 수열 [Python(파이썬)] (0) | 2021.01.29 |