https://www.acmicpc.net/problem/15988
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
int[] dp = new int[1000002];
dp[1] = 1;
dp[2] = 2;
dp[3] = 4; //111 12 21 3
for(int i=4; i<=1000001; i++) {
dp[i] = (dp[i-1]+dp[i-2]+dp[i-3])%1_000_000_009;
}
for(int t=0; t<tc;t++) {
int n = sc.nextInt();
System.out.println(dp[n]);
}
}
์ค๋ต๋ ธํธ(ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์ ๋ฐ ๊ฐ์ ์ )
๊ธฐ๋ณธ DP์ ํ์ด๋ผ์ ๋ก์ง ๊ตฌ์ฑํ๋ ํ๋ ๊ฑด ์ด๋ ต์ง ์์๋ค.
i๋ฒ์งธ ์์น์์ ๊ฒฝ์ฐ์์๊ฐ ์ด์ ํจํด์์ 1,2,3์ ๊ฒฝ์ฐ๊ฐ ์ถ๊ฐ๋๋๊น
i = i-1 + i-2 + i-3 ์ธ๊ฒ ์์ฐ์ค๋ฝ๋ค.
ํ๋ฆฐ์ด์ ๋ ๋ฒ์ ๊ณ์ฐ์ ์ ๋ชปํด์์ธ๋ฐ, ๋๋จธ์ง๋ก 10์ต 9๋ฅผ ์ฒ๋ฆฌํ๋๊น ๋น์ฐํ ๋ ์ค ์์์ง๋ง. ์ ๊ดํธ๋ก ๋ฌถ์ธ ๊ฒ๋ INT์ฐ์ฐ์ผ๋ก ๋ผ์ INT๊ฐ ์ฐ์ฐํ ์ ์๋ ๋ฒ์๋ฅผ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ long์ผ๋ก ์ ์ธํด์ ํด๋น ๋ฒ์๋ฅผ ๋๋ ค์ค์ผํ๋ค.
์ ๋ต์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
long[] dp = new long[1000_002];
dp[1] = 1;
dp[2] = 2;
dp[3] = 4; //111 12 21 3
for(int i=4; i<=1000001; i++) {
dp[i] = (dp[i-1]+dp[i-2]+dp[i-3])%1_000_000_009;
}
for(int t=0; t<tc;t++) {
int n = sc.nextInt();
System.out.println(dp[n]);
}
}
}
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
๋ฐ์ํ
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 11725๋ฒ: ํธ๋ฆฌ์ ๋ถ๋ชจ์ฐพ๊ธฐ (0) | 2024.02.10 |
---|---|
[BOJ][JAVA] 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2024.02.07 |
[BOJ][JAVA] 2910๋ฒ: ๋น๋์ ๋ ฌ (0) | 2024.01.27 |
[BOJ][JAVA] 1181: ๋จ์ด์ ๋ ฌ (0) | 2024.01.23 |
[BOJ][JAVA] 1021: ํ์ ํ๋ ํ (0) | 2024.01.16 |