함량 100%

함지의 개발일기

알고리즘/DP

[백준/DP] 11727 2×n 타일링2 (Python, 파이썬)

Haamjee 2021. 7. 20. 23:11

https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 

 

 

이 문제는 이전에 풀었던 11276 2*n 타일링 문제에서 조건이 추가된 문제이다.

 

이전에는 마지막에 두 가지 경우가 올 수 있었으나, 이 문제의 경우에는 세가지 경우가 올 수 있다. 

그러므로 이 문제의 점화식은 

D[n] = D[n-1] +  D[n-2] * 2 

이다.

 

n = int(input())
D = [0 for _ in range(n+1)]

if n == 1: print(n)
elif n==2: print(n+1)
else:
    D[1] = 1
    D[2] = 3

    for i in range(3, n+1):
        D[i] = D[i-1] + D[i-2] * 2
    
    print(D[n]%10007)