사용한 것
- 점화식을 세워 풀이하기 위한 bottom-up
풀이 방법
- n = 1 : {1}
- n = 2 : {1, 1}, {2}
- n = 3 : {1, 1, 1}, {2, 1}, {1, 2}, {3}
- n = 4 :
{1, 1, 1, 1}, {2, 1, 1}, {1, 2, 1}, {3, 1}, n = 3 에서 원소 1 추가
{1, 1, 2}, {2, 2}, n = 2 에서 원소 2 추가
{1, 3} n = 1 에서 원소 3 추가
- 따라서 점화식은 dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]
코드
public class Main {
private static final int MOD = 1_000_000_009;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(br.readLine());
long[] dp = new long[n + 1];
dp[1] = 1;
if (n >= 2) {
dp[2] = 2;
}
if (n >= 3) {
dp[3] = 4;
}
for (int j = 4; j <= n; j++) {
dp[j] = (dp[j - 1] + dp[j - 2] + dp[j - 3]) % MOD;
}
System.out.println(dp[n]);
}
}
}