Greedy Algorithm (그리디 알고리즘)
그리디 알고리즘이란? 그리디 알고리즘은 눈앞의 이익만을 좇는 알고리즘이다. 그리디 알고리즘은 앞의 선택이 이후 선택에 영향을 주지 않는 문제에 잘 작동한다. 그리고 그리디 알고리즘은 글로벌 최적을 찾기 위해 각 단계에서 로컬 최적의 선택을 하는 알고리즘이다. 대부분의 경우 계산 속도가 빠르므로 매우 실용적이다. 배낭 문제 문제 현재 15kg를 담을 수 있는 배낭, A (12kg, 4달러), B (1kg, 2달러), C (4kg, 10달러), D (1kg, 1달러), E (2kg, 2달러)가 있다. 달러의 가치가 최대가 되도록 배낭에 넣을 짐을 골라보자. 풀이 단가가 가장 높은 짐부터 배낭에 담으면 된다. 동전 바꾸기 문제 문제 현재 알바생에게 10원, 50원, 100원이 존재한다. 160원을 동전의 개수..
회의실 배정 [백준 1931번]
문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 내 풀이 그리디 알고리즘이다. 가장 먼저 끝나는 회의를 선택한 후, 그 회의를 기점으로 시작하는 시간이 금방 다가오는 회의를 선택하는 방법으로 풀었다. 여기서 중요한 것은 정렬이다. 끝나는 시간을 기준으로 오름 차순 정렬하고, 끝나는 시간이 같다면 시작하는 시간을 기준으로 오름 차순 정렬해야 한다. "끝나는 시간으로만 정렬하면 안되나요?"라는 질문을 했을 때의 답변은 "안됩니다."이다. 2 3 3 1 3 의 예제를 생각해보자. 1. 끝나는 시간으로만 정렬하면 [(3, 3), (1, 3)]이 되기 때문에 답은..