코딩테스트 대비/BOJ

[Baekjoon/Python] 11727번: 2×n 타일링 2 - 효과는 굉장했다!

bluetag_boy 2021. 11. 14. 04:04
반응형
 

11727번: 2×n 타일링 2

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

www.acmicpc.net

알고리즘 분류

  • 다이나믹 프로그래밍

 

SOLUTION

import sys

n = int(sys.stdin.readline())
dp = [0] * 1001 # n은 최대 1000까지 이므로 1001개 생성(0번째 포함)
# n == 2일때 까지는 규칙성이 보이지 않으므로 따로 생성
dp[0] = 0
dp[1] = 1
dp[2] = 3

for i in range(3, 1001):
    dp[i] = dp[i-1] + (dp[i-2] * 2) # n>=3 일때 다음과 같은 규칙이 성립된다

print(dp[n] % 10007)