처음 문제를 풀었을 때 메모리 초과에 걸렸다.
왜일까 고민하다가 '방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.'에서 힌트를 얻었다.
디피를 채울 때 나머지만 넣어 줘도 상관이 없지 않을까 하는 생각을 했다.
# dp 설계
dp = [
0 for _ in range(1000001)
]
# dp 초기설정
dp[1] = 1
dp[2] = 2
dp[3] = 4
# dp 채워넣기
for i in range(4, 1000001):
dp[i] = (dp[i-3] + dp[i-2] + dp[i-1]) % 1000000009
# t 입력
t = int(input())
# n 입력
for _ in range(t):
n = int(input())
print(dp[n] % 1000000009)
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
[백준_11048] 이동하기 python (0) | 2022.07.14 |
---|---|
[백준_1904] 01타일 python (0) | 2022.07.13 |
[백준_15486] 퇴사2 python (0) | 2022.07.10 |
[백준_11722] 가장 긴 감소하는 부분 수열 python (0) | 2022.07.09 |
[백준_14501] 퇴사 python (0) | 2022.07.08 |