Algorithm
๋ฐฑ์ค 10870 ํผ๋ณด๋์น ์์ด with JAVA
hyunjun's developing ๐ฃ
2023. 12. 29. 14:24
์ผ๋จ n์ ์ ๋ ฅ ๋ฐ์์ผ ํด. -> ์ค์บ๋๋ฅผ ํตํด์ -> ๋ฐ๋ณต๋ฌธ ์ค์ (for int i = 0, i <=n, i++){
f(n) = f(n -1) + f(n - 2)
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); System.out.println(f(n)); } // ํผ๋ณด๋์น ํจ์ static int f(int n) { if (n == 0) return 0; if (n == 1) return 1; return f(n - 1) + f(n - 2); } } | cs |
๋๋ ๋ฉ์ธํจ์์ ํผ๋ณด๋์น ํจ์๋ฅผ ๋จผ์ ๋ถ๋ฆฌ๋ฅผ ํด์ฃผ์๋ค. ๋ฉ์ธํจ์ ๋ถ๋ถ์์๋ ์ค์บ๋๋ฅผ ์ ์ธํ๊ณ ๊ทธ๋ฅผ ํตํด ์ ๋ ฅ ๋ฐ์ผ๋ฉฐ f(n)ํจ์(ํผ๋ณด๋์น ํจ์)๋ฅผ ํธ์ถํด ์ฝ์์ ๋์ฐ๋๋ก ํ์๋ค. ํผ๋ณด๋์น ํจ์๋ 0๋ฒ์งธ ํญ๊ณผ 1๋ฒ์งธ ํญ์ ์ ์ธํ๊ณ 2๋ฒ์งธ ํญ๋ถํฐ๋ ์์ ์๋ ์๋ฅผ ๊ณ์ ๋ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์ง์ฃผ์๋ค. ์ฌ๊ทํจ์์ ๊ฐ๋ ์ด๋ค for๋ฌธ์ ์ด์ฉํด์ ํ์ด๋ ๋๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); System.out.println(f(n)); } // ํผ๋ณด๋์น ํจ์ static int f(int n) { if (n == 0) return 0; if (n == 1) return 1; int[] fibo = new int[n + 1]; fibo[0] = 0; fibo[1] = 1; // for๋ฌธ์ ์ฌ์ฉํ์ฌ ํผ๋ณด๋์น ์์ด ๊ณ์ฐ for (int i = 2; i <= n; i++) { fibo[i] = fibo[i - 1] + fibo[i - 2]; } return fibo[n]; } } | cs |
๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ํ๋ ๋ ์ฌ๋ ค์ฃผ๋๋ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ด๋ค.