백준 1309 c++ : DP

magicdrill·2025년 1월 1일
0

백준 문제풀이

목록 보기
520/654

백준 1309 c++ : DP

#include <iostream>
#include <vector>
#include <algorithm>
#define MOD 9901

using namespace std;

int find_answer(int N) {
	cout << "find_answer()\n";
	int answer = 0;
	int i, j;
	vector<vector<int>> cage(N + 1, vector<int>(2, 0));
	cage[1][0] = 1;// 첫 줄에 사자가 한마리도 없는 경우
	cage[1][1] = 2;// 첫 줄에 사자가 있는 경우 (왼쪽, 오른쪽 배치 경우의 수 2)

	//사자가 가로, 세로로 붙어있게 배치 할 수 없음
	//사자를 배치하는 경우의 수

	//[i][0]은 한마리도 배치 안하는 경우
	//[i][1]는 한마리를 배치하는 경우
	for (i = 2; i <= N; i++) {
		cage[i][0] = (cage[i - 1][0] + cage[i - 1][1]) % MOD;
		cage[i][1] = (2 * cage[i - 1][0] + cage[i-1][1]) % MOD;
		cout << cage[i][0] << "\t" << cage[i][1] << "\n";
	}
	answer = (cage[N][0] + cage[N][1]) % MOD;

	return answer;
}

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;

	cin >> N;
	cout << find_answer(N) << "\n";

	return 0;
}

0개의 댓글