๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1003
๐ ๋ฌธ์ ์์ฝ
- fibonacci(n)์ ํธ์ถํ ๋ 0๊ณผ 1์ด ๋ช ๋ฒ ์ถ๋ ฅ๋๋์ง ๊ณ์ฐํ๋ ๋ฌธ์ .
fibonacci(3) ํธ์ถ ์,
fibonacci(3) → fibonacci(2) + fibonacci(1)
fibonacci(2) → fibonacci(1) + fibonacci(0)
0์ 1๋ฒ, 1์ 2๋ฒ ํธ์ถ๋จ.
๐ ํ์ด ๋ฐ ์๊ณ ๋ฆฌ์ฆ
- dp[n][0]๊ณผ dp[n][1]์ ์ฌ์ฉํ์ฌ n์ผ ๋ 0๊ณผ 1์ ํธ์ถ ํ์๋ฅผ ์ ์ฅ
- dp[n][0]: fibonacci(n)์์ 0์ด ํธ์ถ๋ ํ์.
- dp[n][1]: fibonacci(n)์์ 1์ด ํธ์ถ๋ ํ์.
- ์ฌ๊ท + ๋ฉ๋ชจ์ด์ ์ด์
(DP) ํ์ฉ
- ํ ๋ฒ ๊ณ์ฐํ ๊ฐ์ ์ ์ฅํ์ฌ ์ค๋ณต ์ฐ์ฐ ๋ฐฉ์ง.
- ๋ฐ๋ณต๋ฌธ ๋ฐฉ์์ผ๋ก n ≤ 40๊น์ง ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ, ์ต์ ํ ๊ฐ๋ฅ
๐ก ์ฝ๋
1. ์ฌ๊ท + ๋ฉ๋ชจ์ด์ ์ด์ (DP) ํ์ฉ
public class Baekjoon_1003 {
static int[][] dp = new int[41][2];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
// 1. DP ์ด๊ธฐ๊ฐ ์ค์
dp[0][0] = 1; // fibonacci(0)
dp[1][1] = 1; // fibonacci(1)
while (t-- > 0) {
int n = sc.nextInt();
// ์ฌ๊ท + ๋ฉ๋ชจ์ด์ ์ด์
(DP) ํ์ฉ
fibonacci(n);
System.out.println(dp[n][0] + " " + dp[n][1]);
}
}
static int[] fibonacci(int n) {
if(dp[n][0] > 0 || dp[n][1] > 0){
return dp[n];
}
dp[n][0] = fibonacci(n - 1)[0] + fibonacci(n - 2)[0];
dp[n][1] = fibonacci(n - 1)[1] + fibonacci(n - 2)[1];
return dp[n];
}
}
2. ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฏธ๋ฆฌ n ≤ 40๊น์ง ๋ฏธ๋ฆฌ ๊ณ์ฐ
public class Baekjoon_1003 {
static int[][] dp = new int[41][2]; // 0๊ณผ 1์ ํธ์ถ ํ์ ์ ์ฅ
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
// 1. DP ์ด๊ธฐ๊ฐ ์ค์
dp[0][0] = 1; // fibonacci(0)
dp[1][1] = 1; // fibonacci(1)
// 2. DP ํ
์ด๋ธ ๋ฏธ๋ฆฌ ์ฑ์ฐ๊ธฐ (๋ฐ๋ณต๋ฌธ)
for (int i = 2; i <= 40; i++) {
dp[i][0] = dp[i - 1][0] + dp[i - 2][0];
dp[i][1] = dp[i - 1][1] + dp[i - 2][1];
}
while (t-- > 0) {
int n = sc.nextInt();
System.out.println(dp[n][0] + " " + dp[n][1]);
}
}
}
๐ ์๊ฐ ๋ณต์ก๋ ๋ถ์
- N๋ฒ๋งํผ ์ํ : O(N)
'์๊ณ ๋ฆฌ์ฆ(JAVA)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11053 & 11722 "๊ฐ์ฅ ๊ธด ์ฆ๊ฐ/๊ฐ์ ๋ถ๋ถ ์์ด" (JAVA) (0) | 2025.02.18 |
---|---|
๋ฐฑ์ค 1316 "๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค" (JAVA) (0) | 2025.02.18 |
๋ฐฑ์ค 24268 "2022๋ ๋ฌด์์ด ํน๋ณํ ๊น" (JAVA) (0) | 2025.02.17 |
๋ฐฑ์ค 9935 "๋ฌธ์์ด ํญ๋ฐ" (JAVA) (0) | 2025.02.16 |
๋ฐฑ์ค 3078 "์ข์ ์น๊ตฌ" (JAVA) (0) | 2025.02.15 |