0/1 Knapsack Problem - DP
1. Knapsack Problem, 배낭문제란? 많은 예제에서 이야기하듯이, 무게와 가치로 설명을 해본다. 어떠한 아이템이 있을 때, 그 아이템은 무게와 가치라는 두 개의 값을 갖는다. 이 때, 무게는 제약조건이고, 가치는 최대로 얻고 싶은 것이다. 이러한 아이템이 여러개 있을 때, 선택한 아이템들의 가치합을 최대로 만드는 아이템들을 선택하는 것이다. 간단히 말하자면 부분집합을 찾는데, 부분집합에 조건이 따로 있다고 생각하면 된다. 그래서 브루트포스로 해당 문제를 해결하면 O(2ⁿ) 만큼, 즉 부분집합의 수 만큼 시간이 걸린다. 2. 다이나믹 프로그래밍(DP) 이용 DP는 큰 문제를 작은 문제로 나누어서 푸는 기법이다. 그 과정에서 중복되는 계산값을 Memoization 해서 시간 복잡도를 줄인다. 따..
Algorithm
2022. 2. 4.