본문 바로가기
백준 알고리즘/다이나믹 프로그래밍

백준 1309번 C++

by paysmile 2019. 7. 20.

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
const int MAX = 100001;
const int MOD = 9901;
int n;
int cache[MAX][3];

int lion() {
	cache[0][0] = cache[0][1] = cache[0][2] = 1;

	for (int i = 1; i < n; i++) {
		cache[i][0] = (cache[i - 1][0] + cache[i - 1][1] + cache[i - 1][2]) % MOD;
		cache[i][1] = (cache[i - 1][0] + cache[i - 1][2]) % MOD;
		cache[i][2] = (cache[i - 1][0] + cache[i - 1][1]) % MOD;
	}
	return (cache[n - 1][0] + cache[n - 1][1] + cache[n - 1][2]) % MOD;
}

int main(void) {
	cin >> n;

	cout << lion() << endl;
	return 0;
}

'백준 알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글

백준 1937번 C++  (0) 2019.07.20
백준 6359번 C++  (0) 2019.07.20
백준 1965번 C++  (0) 2019.07.20
백준 1520번 C++  (0) 2019.07.20
백준 1890번 C++  (0) 2019.07.17