반응형
D[n]에 이전 수를 기억하는 변수를 두어 점화식을 세웁니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
long mod = 1000000009L;
long[][] D = new long[100001][4];
for (int i = 1; i <= 100000; i++) {
if (i-1 >= 0) {
D[i][1] = D[i - 1][2] + D[i - 1][3];
if (i == 1) D[i][1] = 1;
}
if (i-2 >= 0) {
D[i][2] = D[i - 2][1] + D[i - 2][3];
if (i == 2) D[i][2] = 1;
}
if (i-3 >= 0) {
D[i][3] = D[i - 3][1] + D[i - 3][2];
if (i == 3) D[i][3] = 1;
}
D[i][1] %= mod;
D[i][2] %= mod;
D[i][3] %= mod;
}
int T = Integer.parseInt(br.readLine());
while (T-- > 0) {
int n = Integer.parseInt(br.readLine());
sb.append((D[n][1] + D[n][2] + D[n][3]) % mod + "\n");
}
System.out.print(sb);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 11053번 가장 긴 증가하는 부분 수열 [ Java ] (0) | 2021.04.04 |
---|---|
백준 2193번 이친수 [ Java ] (0) | 2021.04.03 |
백준 16194번 카드 구매하기 2 [ Java ] (0) | 2021.04.02 |
백준 11052번 카드 구매하기 [ Java ] (0) | 2021.04.02 |
백준 9095번 1, 2, 3 더하기 [ Java ] (0) | 2021.04.01 |