diff --git "a/LiiNi-coder/202508/26 BOJ 1, 2, 3 \353\215\224\355\225\230\352\270\260 4.md" "b/LiiNi-coder/202508/26 BOJ 1, 2, 3 \353\215\224\355\225\230\352\270\260 4.md" new file mode 100644 index 00000000..142e164d --- /dev/null +++ "b/LiiNi-coder/202508/26 BOJ 1, 2, 3 \353\215\224\355\225\230\352\270\260 4.md" @@ -0,0 +1,55 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + private static BufferedReader br; + private static int t; + private static int n; + private static int[][] dp; + + public static void main(String[] args) throws IOException { + br = new BufferedReader(new InputStreamReader(System.in)); + t = Integer.parseInt(br.readLine()); + int maxN = 10000; + dp = new int[4][maxN + 1]; + dp[1][1] = 1; //1 + dp[1][2] = 1; //1+1 + dp[2][2] = 1; //2 + dp[1][3] = 1; //1+1+1 + dp[2][3] = 1; //2+1 + dp[3][3] = 1; //3 + + for (int i = 1; i <= 3; i++) { + for (int j = 1; j <= maxN; j++) { + dp[0][j] += dp[i][j]; + } + } + + for (int i = 4; i <= maxN; i++) { + //맨 앞 항이 1 -> 1 + (나머지를 1,2,3으로 만듦) + dp[1][i] = dp[0][i - 1]; + + // 맨 앞 항이 2 -> 2 + (나머지를 2,3으로 만듦) + dp[2][i] = dp[2][i - 2] + dp[3][i - 2]; + if (i == 2) dp[2][i] = 1; + + // 맨 앞 항이 3 -> 3 + (나머지를 3으로 만듦) + dp[3][i] = dp[3][i - 3]; + if (i == 3) dp[3][i] = 1; + + dp[0][i] = dp[1][i] + dp[2][i] + dp[3][i]; + } + + StringBuilder sb = new StringBuilder(); + for(int tt = 0; tt