본문 바로가기
백준/C++

백준 11727 : 2xn 타일링 2 [C++]

by 대니스 2022. 9. 4.

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

소스 코드 :

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n;
	int result = 0;
	cin >> n;
	vector<int> v(n);

	v[0] = 1;
	v[1] = 3;

	for (int i = 2; i < n; i++)
	{
		v[i] = (v[i - 1] + v[i - 2]*2) % 10007; 
	}

	cout << v[n - 1];
}

마무리 : 이전 글과 유사한 문제로 타일을 채울 때 2x2의 타일이 추가된다는 점이 이전 글과 다른 차이점이다. 계산을 했을 때 불규칙하게 숫자가 늘어나서 식을 세우는게 힘들었는데 그래도 찾아내어 위와 같은 소스 코드를 짰다.