반응형

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

 

1309번: 동물원

첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다.

www.acmicpc.net

 

dp[i] = dp[i - 1] * 3 - dp[i - 2] - dp[i - 3]

두 번의 뺄셈 연산에서 나머지 연산이 적용될 수 있도록 MOD * 2를 더한 상태에서 나머지를 구해주었습니다.

 

#include <iostream>
#include <algorithm>
using namespace std;
#define MOD 9901
int main() {
	int n, ans = 0, dp[3] = { 1, 3, 7 };
	scanf("%d", &n);
	for (int i = 3; i <= n; i++) {
		int val = (dp[2] * 3 - dp[1] - dp[0] + MOD * 2) % MOD;
		dp[0] = dp[1];
		dp[1] = dp[2];
		dp[2] = val;
	}
	printf("%d", dp[min(n, 2)] % MOD);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 17140 : 이차원 배열과 연산  (0) 2021.11.19
백준 19952 : 인성 문제 있어??  (0) 2021.11.19
백준 18222 : 투에-모스 문자열  (0) 2021.11.19
백준 22945 : 팀 빌딩  (0) 2021.11.19
백준 1759 : 암호 만들기  (0) 2021.11.19

+ Recent posts