하루하나코딩

백준 2133 : 타일채우기

HAHAKO 2023. 1. 13. 10:28

코드

#include <iostream>

using namespace std;

int dp[31];

int main(){
	int n;
	cin >> n;
	
	dp[0] = 1;
	dp[1] = 0;
	dp[2] = 3;
	
	if(n%2 == 1) cout << "0";
	else{
		for(int i = 4; i <= n; i = i+2){
			dp[i] = 3*dp[i-2];
			for(int j = i-4; j >=0 ; j = j - 2){
				dp[i] += 2* dp[j];
			}
		}
		cout << dp[n];
	}
	
	
	return 0;
}

알게된 점

참.. 이게 수학문젠지 알고리즘문제인지..

점화식을 생각하는게 참 어렵습니다.

dp는 점화식 생각이 참 중요한 문제 같습니다..