Home 2xn 타일링 2 백준 12852번
Post
Cancel

2xn 타일링 2 백준 12852번

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

문제

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

아래 그림은 2×17 직사각형을 채운 한가지 예이다.

img

평범한? DP문제입니다. 다만 점화식을 구하는데 4번째….가 11가지 케이스가 나오는데 9개로보고 한참을 고민했습니다.

결론적으로 d[i] = d[i-1] + d[i-2] * 2 입니다.

1
2
3
4
5
6
num = int(input())
dp = [0 for i in range(1010)]
dp[1], dp[2] = 1, 3
for i in range(3, num+1):
    dp[i] = (dp[i-1] + dp[i-2]*2) % 10007
print(dp[num])

원인은 잘 모르겠는데 dp 리스트를 입력받아서 생성하면 인덱스 에러가 나옵니다. 조건에 따라서 최다 값은 1000이니 넉넉하게 미리 만들어줍시다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.