백준 11057은 재귀로 풀면 recursion 에러가 난다. 호출 제한을 걸어둔 게 있기 때문에 그런데, 아래 코드로 제한을 늘릴 수 있다.
import sys
sys.setrecursionlimit(10000)
이렇게 해서 풀긴 했는데 재귀가 아닌 방법으로 다시 풀어야겠다.
재귀로 푼 방법
import sys
sys.setrecursionlimit(10000)
def calc(num, __cache = {1:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}):
if num in __cache:
return __cache[num]
__cache[num] = []
for i in range(1, 11):
__cache[num].append(sum([calc(num-1)[j-1] for j in range(1, i+1)]))
return __cache[num]
n = int(sys.stdin.readline())
print(sum(calc(n)) % 10007)
'Algorithm' 카테고리의 다른 글
[DP] boj 9465 - 2행 배열에서 점화식 구하기 (0) | 2021.01.06 |
---|---|
[그래프] boj 2331 - 반복수열 (0) | 2021.01.04 |
[DP] boj 2133 - 복잡한 점화식 (0) | 2021.01.02 |
[DP] boj 11053, 11054, 11055, 11722 - 가장 긴 증가하는 부분 수열(LIS) (0) | 2021.01.01 |
[DP] boj 11726, 11727 - 2xn 타일링 (0) | 2021.01.01 |