[Java/알고리즘] 그리디 알고리즘(탐욕법, Greedy Algorithm) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘의 설계 방법 중 탐욕법/그리디 알고리즘에 대해서 이해를 돕기 위해 작성한 글입니다.1) 그리디 알고리즘(탐욕법, Greedy Algorithm)💡 그리디 알고리즘(탐욕법, Greedy Algorithm) 이란?- 최적의 값을 구해야 하는 상황에서 사용되는 근시안적인 방법론으로 ‘각 단계에서 최적이라고 생각되는 것을 선택’ 해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘입니다.- 이때, 항상 최적의 값을 보장하는것이 아니라 최적의 값의 ‘근사한 값’을 목표로 하고 있습니다.- 주로 문제를 분할 가능한 문제들로 분할한 뒤, 각 문제들에 대한 최적해를 구한 뒤 이를 결합하여 전체 문제의 최적해를 구하는 경우에 주로 사용됩니다. 💡 [문제] 노드에서 가장 합이 높은 방법..
[Java/알고리즘] 동적 계획법(DP: Dynamic Programming) 이해하기
·
Java/알고리즘 & 자료구조
해당 글에서는 알고리즘 중 동적 계획법에 대한 이해를 돕기 위해 작성한 글입니다. 1) 동적 계획법(DP: Dynamic programming)💡 동적 계획법(DP: Dynamic programming) - 작은 문제들을 풀면서 그 결과를 저장해 나아가면서 전체 문제를 해결하는 알고리즘을 의미합니다. - 해당 알고리즘의 특징은 중복 계산을 줄여서 계산 속도를 높일 수 있으며 경우의 수가 많은 경우에도 효율적으로 계산할 수 있습니다. 일반적으로 재귀적으로 구현되며 메모이제이션(Memoization) 기법을 사용하여 중복 계산을 피합니다. [더 알아보기] 💡 재귀(Recursion)란? - 자기 자신을 호출하는 함수로 반복적으로 호출을 함으로써 원하는 결과를 도출 할 수 있습니다. 💡 메모이제이션(Memoi..