PS/BOJ
[백준] 11727.cpp : 2 x n 타일링 2
bconfiden2
2020. 5. 27. 21:05
11727번: 2×n 타일링 2
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.
www.acmicpc.net
#include <iostream>
using namespace std;
int n;
int ans[1001] = {0, 1, 3,};
int main(void)
{
cin >> n;
for(int i = 3 ; i <= n ; i++)
{
// i번째 경우 = i-1번째에 2x1 놓기 + i-2번째에 x 2번(2x2 / 1x2 두개 놓기)
ans[i] = (ans[i-1] + ans[i-2] * 2) % 10007;
}
cout << ans[n] << '\n';
}
[Try]
1. 2xn 타일링 1번 문제와 비슷한 느낌으로 접근하였다.
[Point]
1. 2x2 박스가 추가된 것인데, n-2 번째의 경우의 수에서 2x2 를 놓냐 2x1 을 놓냐의 두가지가 생긴 것이기 때문에 2만 곱해주면 끝!