반응형

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 

2*i 크기의 타일을 채울 때는,

i-1 크기의 타일에서 2*1의 타일을 하나 덧붙여주거나,

i-2 크기의 타일에서 2*2의 타일 하나를 덧붙여주거나,

i-2 크기의 타일에서 1*2의 타일 두개를 덧붙여줄 수 있습니다.

(2*1 타일 두개는 i-1 크기의 타일에서 2*1의 타일을 하나 덧붙여주는 것과 중복)

따라서, dp[i] = dp[i-1] + 2 * dp[i-2];

 

#include <cstdio>
int main() {
	int n, dp[1001] = {0, 1, 3};
	scanf("%d", &n);
	for (int i = 3; i <= n; i++)
		dp[i] = (dp[i - 1] + dp[i - 2] * 2) % 10007;
	printf("%d", dp[n]);
}

 

반응형

'Algorithm' 카테고리의 다른 글

백준 11052 : 카드 구매하기  (0) 2021.11.12
백준 15988 : 1, 2, 3 더하기 3  (0) 2021.11.12
백준 14226 : 이모티콘  (0) 2021.11.12
백준 4963 : 섬의 개수  (0) 2021.11.12
백준 1707 : 이분 그래프  (0) 2021.11.11

+ Recent posts