코스모스 공작소

백준 11726번 2xn 타일링 [성공] 본문

프로그래밍/알고리즘

백준 11726번 2xn 타일링 [성공]

cosmos_studio_ 2019. 11. 29. 22:36
반응형

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

 

11726번: 2×n 타일링

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

www.acmicpc.net

다이나믹 프로그래밍으로 대표적인 문제

#include <iostream>
#include<vector>

using namespace std;

int main(){
	
	int n;
	cin>>n;
	vector<int> tiles;
	tiles.push_back(1);
	tiles.push_back(2);
	
	for(int i=2;i<n;i++){
		tiles.push_back((tiles[i-1] + tiles[i-2])%10007);
	}
	
	cout<<tiles[n-1]<<endl;
	return 0;
}

기본적으로 모든 다이나믹 프로그래밍이 그렇듯 점화식을 구한다면 쉬운문제

기준을 뒤에서 부터 쌓는다고 생각하면 쉽게 구분이 가능하다.

1X2블럭을 2개 쌓는 것과 2X1블럭을 하나 쌓는 것으로 두개를 구분한다.

 

반응형
Comments