728x90
반응형
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
출처 : 백준
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
DP가 들어가는 문제이다.
Dynamic programming
나머지는 값이 매우 크질 수 있는 경우를 말한다.
d = [0] * 1001
def dp(n):
if n in (1,2) :
return n
if (d[n]!=0):
return d[n]
d[n]= dp(n-1) + dp(n-2)
return d[n] % 10007
n = 9
dp(n)
런타임 에러 (RecursionError)
RecursionErrorRecursionError는 재귀와 관련된 에러입니다. 가장 많이 발생하는 이유는 Python이 정한 최대 재귀 깊이보다 재귀의 깊이가 더 깊어질 때입니다.Python이 정한 최대 재귀 깊이는 sys.getrecursionli
help.acmicpc.net
검증을 했는데도 불구하고 '틀렸습니다'라고 나와서 좀 당황스러웠다.
혹시나 해서 print()를 추가해보았다.
import sys
sys.setrecursionlimit(10**6)
d = [0] * 1001
def dp(n):
if n in (1,2) :
return n
if (d[n]!=0):
return d[n]
d[n]= (dp(n-1) + dp(n-2) ) % 10007
return d[n]
n = int(input())
dp(n)
반응형
'문제 > 백준' 카테고리의 다른 글
1000_A+B (0) | 2021.10.31 |
---|---|
14852_타일 채우기 3 (0) | 2021.09.27 |
2133_타일 채우기 (0) | 2021.09.27 |
11727_2×n 타일링 2 (0) | 2021.09.25 |
2557_Hello World! (0) | 2021.09.25 |