반응형
다이나믹 프로그래밍이란 무엇인가?
- 다이나믹 프로그래밍은 작은 문제들을 해결하는 방식으로, 큰 문제를 해결하는 알고리즘입니다.
- 이전에 계산했던 값을 저장해두고, 다음 계산에서 활용함으로써 연산 시간을 줄이는 방식을 고안했습니다.
다이나믹 프로그래밍의 장점
- 단 하나의 문제에 대해 한번만 해결하면 되기 때문에 반복적인 계산이 필요하지 않습니다.
- 중복 서브 문제들을 효율적으로 해결할 수 있습니다.
- 예상치 못한 문제 상황에 대해 대처할 수 있도록 설계되었습니다.
다이나믹 프로그래밍의 단점
- 여러 개의 서브 문제를 해결하는 데 시간이 오래 걸릴 수 있습니다.
- 비슷한 문제를 여러 번 해결할 수 있기 때문에 메모리 문제가 발생할 수 있습니다.
자바에서의 다이나믹 프로그래밍 사용
- 다이나믹 프로그래밍은 자바에서도 활용됩니다.
- 메서드를 활용한 Bottom-up 방식과 재귀함수를 이용한 Top-down 방식이 있습니다.
Bottom-up 방식
int fib(int n) {
if (n==0) return 0;
if (n==1) return 1;
int d[] = new int[n+1];
d[0] = 0;
d[1] = 1;
for (int i=2; i<=n; i++) {
d[i] = d[i-1] + d[i-2];
}
return d[n];
}
Top-down 방식
int d[];
int fib(int n) {
if (n==0) return 0;
if (n==1) return 1;
if (d[n]!=-1) return d[n];
d[n] = fib(n-1) + fib(n-2);
return d[n];
}
다이나믹 프로그래밍 코드의 성능 향상을 위해
- 메모이제이션 (Memoization) 기법을 활용합니다.
- 메모리를 활용하여 높은 속도와 효율적인 메모리 사용이 가능합니다.
마무리
- 다이나믹 프로그래밍은 작은 문제들을 해결하는 방식으로, 큰 문제를 해결하는 알고리즘입니다.
- 자바에서도 활용되며, 메모이제이션 기법을 활용하면 성능을 향상시킬 수 있습니다.
반응형
'Algorithm' 카테고리의 다른 글
자바(Java)를 이용한 문자열 알고리즘 (0) | 2023.03.23 |
---|---|
자바와 함께 사용하는 그래프 알고리즘 (Graph Algorithms with Java) (1) | 2023.03.23 |
Java를 이용한 검색 알고리즘 (0) | 2023.03.23 |
정렬 알고리즘 -선택 정렬 - selection sort (0) | 2023.02.28 |
정렬 알고리즘 -삽입 정렬 - insertion sort (0) | 2023.02.28 |
댓글