본문 바로가기
Algorithm

자바를 활용한 다이나믹 프로그래밍

by dev-woo 2023. 3. 23.
반응형

다이나믹 프로그래밍이란 무엇인가?

  • 다이나믹 프로그래밍은 작은 문제들을 해결하는 방식으로, 큰 문제를 해결하는 알고리즘입니다.
  • 이전에 계산했던 값을 저장해두고, 다음 계산에서 활용함으로써 연산 시간을 줄이는 방식을 고안했습니다.

다이나믹 프로그래밍의 장점

  • 단 하나의 문제에 대해 한번만 해결하면 되기 때문에 반복적인 계산이 필요하지 않습니다.
  • 중복 서브 문제들을 효율적으로 해결할 수 있습니다.
  • 예상치 못한 문제 상황에 대해 대처할 수 있도록 설계되었습니다.

다이나믹 프로그래밍의 단점

  • 여러 개의 서브 문제를 해결하는 데 시간이 오래 걸릴 수 있습니다.
  • 비슷한 문제를 여러 번 해결할 수 있기 때문에 메모리 문제가 발생할 수 있습니다.

자바에서의 다이나믹 프로그래밍 사용

  • 다이나믹 프로그래밍은 자바에서도 활용됩니다.
  • 메서드를 활용한 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) 기법을 활용합니다.
  • 메모리를 활용하여 높은 속도와 효율적인 메모리 사용이 가능합니다.

마무리

  • 다이나믹 프로그래밍은 작은 문제들을 해결하는 방식으로, 큰 문제를 해결하는 알고리즘입니다.
  • 자바에서도 활용되며, 메모이제이션 기법을 활용하면 성능을 향상시킬 수 있습니다.
반응형

댓글