Skip to content

Commit 03d42ab

Browse files
authored
[20250826] BOJ / G5 / 1, 2, 3 더하기 4 / 이인희
1 parent 95681e0 commit 03d42ab

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
6+
public class Main {
7+
private static BufferedReader br;
8+
private static int t;
9+
private static int n;
10+
private static int[][] dp;
11+
12+
public static void main(String[] args) throws IOException {
13+
br = new BufferedReader(new InputStreamReader(System.in));
14+
t = Integer.parseInt(br.readLine());
15+
int maxN = 10000;
16+
dp = new int[4][maxN + 1];
17+
dp[1][1] = 1; //1
18+
dp[1][2] = 1; //1+1
19+
dp[2][2] = 1; //2
20+
dp[1][3] = 1; //1+1+1
21+
dp[2][3] = 1; //2+1
22+
dp[3][3] = 1; //3
23+
24+
for (int i = 1; i <= 3; i++) {
25+
for (int j = 1; j <= maxN; j++) {
26+
dp[0][j] += dp[i][j];
27+
}
28+
}
29+
30+
for (int i = 4; i <= maxN; i++) {
31+
//맨 앞 항이 1 -> 1 + (나머지를 1,2,3으로 만듦)
32+
dp[1][i] = dp[0][i - 1];
33+
34+
// 맨 앞 항이 2 -> 2 + (나머지를 2,3으로 만듦)
35+
dp[2][i] = dp[2][i - 2] + dp[3][i - 2];
36+
if (i == 2) dp[2][i] = 1;
37+
38+
// 맨 앞 항이 3 -> 3 + (나머지를 3으로 만듦)
39+
dp[3][i] = dp[3][i - 3];
40+
if (i == 3) dp[3][i] = 1;
41+
42+
dp[0][i] = dp[1][i] + dp[2][i] + dp[3][i];
43+
}
44+
45+
StringBuilder sb = new StringBuilder();
46+
for(int tt = 0; tt<t; tt++) {
47+
n = Integer.parseInt(br.readLine());
48+
sb.append(dp[0][n]).append("\n");
49+
}
50+
System.out.print(sb);
51+
52+
br.close();
53+
}
54+
}
55+
```

0 commit comments

Comments
 (0)