Greedy Algorithm(탐욕 알고리즘)
예시
해결 방법
특징
완전 탐색 알고리즘(Brute-Force Algorithm, BFA)
BFA 사용하는 경우
한계
사용하는 곳
동적 프로그래밍 (Dynamic Programing) 알고리즘 기법
DP 문제가 성립할 조건
Top-down VS Bottom-up
public class Topdown {
static int[] dp; // Memoization
public static void main(String[] args) {
int n = 100;
dp = new int[n+1];
System.out.println(fibo(n));
}
// Top-down : 재귀 사용
static int fibo(int x) {
if( x ==1 || x==2) return 1;
if(dp[x] != 0) return dp[x];
dp[x] = fibo(x-1) + fibo(x-2);
return dp[x];
}
}
public class Bottomup {
static int[] dp; // DP 테이블
public static void main(String[] args) {
int n = 100;
dp = new int[n+1];
System.out.println(fibo(n));
}
// Bottom-up : 반복문 사용
static int fibo(int x) {
dp[1] =1;
dp[2] =1;
for(int i=3; i<x+1; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[x];
}
}
메모제이션 특징
참고 사이트 : https://loosie.tistory.com/150