-
[Algorithm] ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ํผ๋ณด๋์น ์์ด ๊ตฌํ๐ปProgramming/Algorithm 2024. 4. 11. 17:34
๋ฌธ์
1) ํผ๋ณด๋ํค ์์ด์ ์ถ๋ ฅํ๋ค. ํผ๋ณด๋์น ์์ด์ด๋ ์์ 2๊ฐ์ ์๋ฅผ ํฉํ์ฌ ๋ค์ ์ซ์๊ฐ ๋๋ ์์ด์ด๋ค.
2) ์ ๋ ฅ์ ํผ๋ณด๋์น ์์ด์ ์ด ํญ์ ์ ์ด๋ค. ๋ง์ฝ 7์ด ์ ๋ ฅ๋๋ฉด 1 1 2 3 5 8 13์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ฉ๋ชจ์ด์ ์ด์ ์ ์ฌ์ฉํ์ง ์์ ๊ตฌํ
import java.util.Scanner; public class Section7_4_Ver1 { public static int DFS(int n) { if (n == 1 || n == 2) return 1; else return DFS(n - 2) + DFS(n - 1); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i = 1; i <= n; i++) System.out.print(DFS(i) + " "); } }
๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด ์ถ๋ ฅํ๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๋งค ์ซ์๋ฅผ ์ถ๋ ฅํ ๋๋ง๋ค 1๋ถํฐ ๋ค์ ์ฌ๊ท๋ฅผ ์์ํด์ผํ๋ ์น๋ช ์ ์ธ ๋จ์ ์ด ์๋ค. ํ 45๊น์ง๋ง ๊ฐ๋ ๊ต์ฅํ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ฌ์ฉํ ์ฌ๊ทํจ์ ๊ตฌํ์ ํตํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๋ฉ๋ชจ์ด์ ์ด์ ์ ์ฌ์ฉํ ๊ตฌํ
import java.util.Scanner; public class Section7_4_Ver2 { static int[] memo; public static int DFS(int n) { if (memo[n] != 0) return memo[n]; if (n <= 2) return memo[n] = 1; else return memo[n] = DFS(n - 2) + DFS(n - 1); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); memo = new int[n + 1]; DFS(n); for (int i = 1; i <= n; i++) System.out.print(memo[i] + " "); } }
์ค์ํ ํฌ์ธํธ: memo[n]์ ๊ฐ์ด ์๋ค๋ฉด, memo[n]์ return ํ๋ค.
์์ ์ฌ์ง์ ๋ณด๋ฉด DFS(3)์์ ๋จผ์ DFS(2)๋ฅผ ๊ตฌํ๋๋ฐ ๋ DFS(4)์์ DFS(2)๊ฐ ํ ๋ฒ ๋ ํธ์ถ๋์ด์ผํ๋ค.
๋, DFS(4)์์ DFS(3)์ด ๋จผ์ ํธ์ถ ๋์๋๋ฐ, ๋ DFS(5)์์ DFS(3)์ ํธ์ถํ๋ค. ์ด๋ ๊ฒ ๋๋ฉด 3์ ๋ ํ ๋ฒ ์ฌ๊ท๋ฅผ ๋ฐ๋ณตํด์ผํ๋ค.
๋จ์ฝ ์๊ฐ ์ปค์ง๋ค๋ฉด ์ ๋ง ์์ฒญ๋ ์๊ฐ์ด ๊ฑธ๋ฆด๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ๋ฐฐ์ด์ ์๋ ๊ฐ์ด๋ผ๋ฉด ๊ทธ ๊ฐ์ returnํ๋๋ก ํ๋๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค!
'๐ปProgramming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] BFS, DFS (with Python) (0) 2024.06.28 [Algorithm] ์ด์งํ์(Binary Search) (0) 2024.04.09 [Algorithm] ์ฝ์ ์ ๋ ฌ(Insertion Sort) (0) 2024.03.28 [Algorithm] ๋ฒ๋ธ ์ ๋ ฌ(Bubble Sort) (0) 2024.03.27 [Algorithm] ์ ํ์ ๋ ฌ(Selection Sort) (0) 2024.03.26