알고리즘
백준_15988_1, 2, 3 더하기 3
shj718
2022. 1. 31. 11:40
'1, 2, 3 더하기' 문제는 다이나믹 프로그래밍(dp)으로 푸는 문제다. 9095번(1 ,2, 3더하기)은 재귀와 메모이제이션으로 풀었었는데, 이번에는 반복문으로 풀어보았다.
#include <iostream>
#define MAX 1000001
using namespace std;
int T, x;
long long d[MAX];
void dp(int n) {
d[1] = 1;
d[2] = 2;
d[3] = 4;
for (int i = 4; i <= n; i++) {
d[i] = (d[i - 1] + d[i - 2] + d[i - 3]) % 1000000009;
}
cout << d[n] << '\n';
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> T;
for (int i = 0; i < T; i++) {
cin >> x;
dp(x);
}
return 0;
}