백준 문제풀이/Dynamic Programming

BOJ 11727 : 2xn 타일링 2

준코딩 2020. 5. 15. 17:51

문제


문제 풀어보기

 

풀이


 

이거 하나만 확인하세요 !!

 

 

 

경우의 수를 계산하는 모든 과정에서

모듈러 연산을 하셨나요 ?

 

 

ㅎㅎ

 

 

 

코드


#include <iostream>
#include <vector>

using namespace std;

int d[1001][3];
#define mod 10007

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int n;
	cin >> n;
	d[1][1] = 1;
	d[2][0] = d[2][1] = d[2][2] = 1;

	for (int i = 3; i <= n; i++) {
		d[i][0] = (d[i - 2][0] + d[i - 2][1] + d[i - 2][2])%mod ;
		d[i][1] = (d[i - 1][1] + d[i - 1][0] + d[i - 1][2])%mod ;
		d[i][2] = (d[i - 2][0] + d[i - 2][1] + d[i - 2][2])%mod ;
	}

	int ans = (d[n][0] + d[n][1] + d[n][2])%mod;
	cout << ans << '\n';

	return 0;
}