반응형

2×n 타일링

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net

출처 : 백준

 

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.

아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

 

다이나믹 프로그래밍 타일링 문제 풀어보기 (1/2)

 

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

 

런타임 에러 (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

+ Recent posts