Problem Solving/BOJ(백준)
[BOJ]백준 15988번: 1, 2, 3 더하기 3(C++)/DP
이진2
2021. 7. 4. 23:09
https://www.acmicpc.net/problem/15988
15988번: 1, 2, 3 더하기 3
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.
www.acmicpc.net
오랜만에 DP 기본문제
숫자가 커질 수 있으니 계산 과정에서 나머지 연산을 꼭 해줘야 한다 !!
처음에 최대 숫자까지 미리 계산해준 뒤 입력에 따라 출력만 제대로 해주면 끝
#include <cstdio>
#define MOD 1000000009
int n, tc, dp[1000005] = { 0,1,2,4 };
int main() {
for (int i = 4; i <= 1000000; i++) {
dp[i] = (dp[i - 3] + dp[i - 2]) % MOD;
dp[i] = (dp[i - 1] + dp[i]) % MOD;
}
scanf("%d", &tc);
for (int t = 0; t < tc; t++) {
scanf("%d", &n);
printf("%d\n", dp[n]);
}
return 0;
}