![[알고리즘] 배낭 문제(Knapsack Problem)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIbzNu%2FbtsBCmTipZ5%2FF4GddqIj30yt31aWGE1qj1%2Fimg.png)
Concept 한 여행가가 가지고 가는 배낭에 담을 수 있는 무게의 최댓값이 정해져 있고, 일정 가치와 무게가 있는 짐들을 배낭에 넣을 때, 가치의 합이 최대가 되도록 짐을 고르는 방법을 찾는 문제 Feature 배낭 문제에는 두 가지 유형이 존재 Fractional Knapsack : 물건을 쪼갤 수 있음. 무게나 가치가 소수점 단위로 나뉠 수 있는 문제. 0-1 Knapsack : 물건을 쪼갤 수 없음. 무게나 가치가 무조건 정수타입을 가지는 문제. Implement Brute-Force 가장 기본적인 풀이방법으로써 N개의 물건에 대해 가능할 수 있는 모든 조합을 만들어 보는 접근법. 시간복잡도는 O(2^N)으로 많이 느리다고 볼 수 있다. Dynamic Programming DP의 핵심은 메모이제이..
![[알고리즘] 이분 그래프(Bipartite Graph)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLVMWi%2FbtsA9Vv3lNI%2FRx7xfDINncU1NvtbE0RMak%2Fimg.png)
이분 그래프 조건 : 두 개의 색으로만 구분, 인접한 정점이 같은 색을 가지면 안됨. Concept 인접한 정점끼리 서로 다른 색으로 칠해서 모든 정점을 두 가지 색으로만 칠할 수 있는 그래프. 위 사진과 같이 두 개의 그룹으로 나누어지며, 같은 그룹의 정점은 인접하지 않음. 간선(E)이 아예 없고, 정점(V)만 있는 경우도 이분 그래프에 속함. Feature 주어진 그래프가 이분 그래프인지 확인하기 위해서는 BFS, DFS 탐색을 활용. 완전탐색의 일종으로 모든 정점을 방문하여 검사하기 때문에 O(V+E)의 시간복잡도를 가짐 인접 정점 간의 싸이클(Cycle)이 발생할 경우 홀수 싸이클의 경우 이분 그래프를 절대 만족 못함. Implement 너비 우선 탐색(BFS)를 활용한 탐색 1. 인접리스트를 활..
![동적 계획법(Dynamic Programming)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgl7Yb%2FbtsswTFjNjn%2Fc1lO4tkAUbXk22nJDAk5e0%2Fimg.png)
1. 재귀 호출과 메모이제이션 문제 제시 : 토끼 수 구하기 문제의 내용만 달라졌을 뿐 사실 상 피보나치 f(n) = f(n-2) + f(n-1)이 성립 피보나치 수열 Fi : 피보나치 i번째 항을 구하는 함수 Fi : Fi-2 + Fi-1 → 재귀로 구현 fibo(n) IF n=2 AND memo[n] = 0 //0은 메모가 안된 상태를 의미 memo[n]