반응형
https://www.acmicpc.net/problem/1309
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 |