Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[코테 알고리즘] 동적계획법(Dynamic Programming)과 피보나치 수열 본문
동적계획법(Dynamic Programming)의 전제와 정의
⚠️ 작은문제에서 구한 값이 그것을 포함하는 큰문제에서도 동일하다.
.
하나의 문제는 단 한번만 풀도록 하는 알고리즘을 말한다.
그러기 위해서 이미 구한 답을 잠시 기록해두는 과정을 '메모이제이션'이라고 한다.
🕑 시간복잡도: O(N)
동적계획법(Dynamic Programming)과 피보나치 수열
: 모든 항이 바로 앞 두 항의 합인 수열을 말한다.
(단, 첫번째항과 두번째항은 1 이다)
import java.util.*;
class Main {
static int[] A = new int[100];
public static void main(String[] args) {
System.out.println(dp(30));
}
public static int dp(int x) {
if(x == 1) return 1;
if(x == 2) return 1;
if(A[x] != 0) return A[x]; // 메모이제이션
return A[x] = dp(x-1) + dp(x-2); // 큰 문제를 동일한 형태의 작은 문제로 나눈다
}
}
'코딩 테스트' 카테고리의 다른 글
[코테 알고리즘] toCharArray() (0) | 2022.12.17 |
---|---|
[코테 알고리즘] 슬라이딩 윈도우(Sliding Window) (0) | 2022.12.16 |
[코테 알고리즘] 계수(Counting) 정렬 (0) | 2022.12.15 |
[코테 알고리즘] 병합(Merge) 정렬 (2) | 2022.12.15 |
[코테 알고리즘] 퀵(Quick) 정렬 (0) | 2022.12.14 |
Comments