1. [Algorithm] 그리디
반응형
그리디 알고리즘(Greedy)
- 가장 단순하지만 강력한 문제 해결 방법이다.
- '탐욕법'이라고 불리기도 한다.
- 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미하며 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.
- 다익스트라, 플로이드 워셜 알고리즘은 엄밀히 말하자면, 그리디 알고리즘으로 분류된다.
그리디 알고리즘 유형은 매우 다양하기 때문에, 특이 케이스를 제외하고는 단순 암기를 통해 해결할 수 있는 알고리즘 유형이 아니다.
따라서 많은 유형의 그리디 알고리즘 유형을 접해봐야한다.
기준에 따라 좋은 것을 선택하는 알고리즘이므로, '가장 큰 순서대로', '가장 작은 순서대로'와 같이 기준을 본인이 직접 정해줘야한다.
ex)
예시를 통해 그리디 알고리즘을 이해해보자.
위의 문제는 그리디 알고리즘을 이용하여 풀 수 있는 대표적인 문제이다.
해결 방법은 '가장 큰 화폐 단위부터 돈을 거슬러 주는 것'이다.
- 제일 먼저 N원을 500원 부터 거슬러 줄 수 있는 만큼 거슬러 준다.
- 그 다음 100원을 거슬러 줄 수 있을만큼 거슬러 준다.
- 그 다음 50원을 거슬러 줄 수 있을만큼 거슬러 준다.
- 그 다음 10원을 거슬러 줄 수 있을만큼 거슬러 준다.
위 문제에서의 답은 6개이다.
코드로 구현해보면 다음과 같다.
특징
- 그리디 알고리즘을 모든 알고리즘 문제에 적용할 수 있는 것은 아니다. → 대부분의 문제는 그리디 알고리즘을 이용했을 때 '최적의 해' 를 찾을 수 없을 가능성이 크다.
- 정확한 답을 찾을 수 있다는 보장이 있을 때는 매우 효과적이고 직관적이다. → 즉, 그리디 알고리즘으로 문제를 풀었을 때는 그 해법이 정당한지 검토해야 한다.
반응형
'Algorithm' 카테고리의 다른 글
3. [Algorithm] DFS / BFS (0) | 2023.03.14 |
---|---|
2. [Algorithm] 구현(시뮬레이션, 완전탐색) (0) | 2023.03.06 |
Algorithm과 Problem Solving (0) | 2023.02.25 |
[이코테] Chapter10-4 / 커리큘럼 (0) | 2023.02.22 |
[이코테] Chapter10-3 / 도시 분할 계획 (0) | 2023.02.21 |
댓글
이 글 공유하기
다른 글
-
3. [Algorithm] DFS / BFS
3. [Algorithm] DFS / BFS
2023.03.14 -
2. [Algorithm] 구현(시뮬레이션, 완전탐색)
2. [Algorithm] 구현(시뮬레이션, 완전탐색)
2023.03.06 -
Algorithm과 Problem Solving
Algorithm과 Problem Solving
2023.02.25 -
[이코테] Chapter10-4 / 커리큘럼
[이코테] Chapter10-4 / 커리큘럼
2023.02.22