문제 : www.acmicpc.net/problem/11727
11727번: 2×n 타일링 2
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.
www.acmicpc.net
풀이
기본적으로 타일을 나누어야 할 단위는 2*2 모양이다.
2*2 크기에 타일링이 가능한 경우의 수는 3이다.
하지만 이 경우 1*2 + 2*_인 경우만 고려되고
2*_ + 1*2인 위 그림과 같은 경우를 고려하지 못한다. 따라서 위 경우는 2가지가 가능하므로 n-3의 경우의 수에 2를 곱한값을 더해준다.
n = int(input())
dp = [0, 1, 3, 5]
for i in range(4, n+1):
dp.append((dp[i-3]*2 + dp[i-2]*3)%10007)
print(dp[n])
'알고리즘 풀이 > 백준' 카테고리의 다른 글
백준 2193번 : 이친수 (Python) (0) | 2021.02.16 |
---|---|
백준 14501번 : 퇴사 (Python) (0) | 2021.02.08 |
백준 1010번 : 다리 놓기 (Python) (0) | 2021.02.06 |
백준 9461번 : 파도반 수열 (Python) (0) | 2021.02.06 |
백준 1932번 : 정수 삼각형 (Python) (0) | 2021.02.04 |