package study; // ì°¸ê³ : https://galid1.tistory.com/507 public class DynamicProgramming { public static void main(String[] args) { // DP(Dynamic Programming) // : í° ë¬¸ì 를 ìì ë¨ìì 문ì ë¡ ìª¼ê°ì í¸ë ìê³ ë¦¬ì¦ // KeyPoint? // ê·ì¹ 찾기 // ì¼ë°ì 찾기 // DP != ë¶í ì ë³µ // ë¶í ì ë³µ? ìì ë¶ë¶ìì ë°ë³µì´ ì¼ì´ëì§ ìì // DP? ìì ë¶ë¶ìì ë°ë³µ(ê·ì¹)ì´ ìì // Problem_í¼ë³´ëì¹ ë¬¸ì 를 DP ë¡ í´ê²°í´ë³´ì // 1. Bottom-up // : ìì 문ì ë¶í° ììíë ë°©ë² System.out.println(fibo_B(6)); // 2. Top-down // : í° ë¬¸ì ë¶í° ììíë ë°©ë² (ë³´íµ ì¬ê· ì´ì©) System.out.println(fibo_T(6 - 1)); } private static int fibo_B(int n) { // 0, 1, 1, 2, 3, 5, 8 ... if (n == 0) return 0; else if (n == 1) return 1; else { int[] arr = new int[n]; arr[0] = 0; arr[1] = 1; for (int i = 2; i < n; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[n - 1]; } } private static int fibo_T(int n) { if(n == 0) return 0; if(n == 1) return 1; else return fibo_T(n - 1) + fibo_T(n - 2); } }