
DP
파이썬으로 풀이하는 경우 recusion limit 에러가 발생할 수 있습니다.
import sys
sys.setrecursionlimit(100000)
import sys
sys.setrecursionlimit(100000)
DIV = 1000000007
cache = None
def solution(n):
global cache # 남은 길이에서의 cache 저장
cache = [0] * (n+2)
return solve(n)
# extraLength: 남은 길이
def solve(extraLength):
global cache, DIV
if extraLength == 0:
return 1
elif extraLength < 0:
return 0
elif cache[extraLength] != 0:
return cache[extraLength]
result = solve(extraLength - 1) # 세로
result += solve(extraLength - 2) # 가로
cache[extraLength] = result % DIV
return cache[extraLength]