반응형
코드
import sys
t = int(input())
dp = [0,1,2,4]
for _ in range(t):
n = int(sys.stdin.readline())
for i in range(len(dp),n+1):
dp.append((dp[i-3]+dp[i-2]+dp[i-1])%1000000009)
print(dp[n])
설명
처음에는 for문 안에 dp를 선언해서 새로운 n 값을 받을 때마다 dp 계산을 했더니 시간초과가 떴다.
그래서 dp를 만들어놓고 계속해서 그 값을 가져다 쓰는 방식으로 다시 코드를 짰다.
예를 들어 n = 4일 때 계산을 하고 나면 dp에는 [0,1,2,4,7]이 들어있게 되고
n = 7 입력을 받았을 때는 dp[5] 부터 계산을 하면 된다.
반응형
'알고리즘 > dynamic programming' 카테고리의 다른 글
[프로그래머스][Python] 등굣길 (0) | 2023.02.08 |
---|---|
[프로그래머스][Python] 정수 삼각형 (0) | 2023.02.06 |
[백준][Python] 16194번 카드 구매하기2 (0) | 2022.12.27 |
[백준][Python] 16395번 파스칼의 삼각형 (0) | 2022.12.26 |
[백준][Python] 11060번 점프 점프 (0) | 2022.12.23 |
댓글