[Algorithm] 2. 그리디 알고리즘(Greedy)
1. 개념과 접근 방법
1) 개념
: 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다.
2) 접근 방법
일반적으로 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요한다. 특정 문제를 만났을 때 단순히 현재 상황에서 가장 좋아 보이는 것만을 선택해도 문제를 풀 수 있는지를 파악할 수 있어야 한다.
이를 위해 정당성 분석이 가장 중요하다. 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는 지 검토하여야 한다.
다양한 아이디어를 떠올려보면서 고민을 해야 하고 창의적 발상을 통한 가정과 그 풀이 방법에 대한 검증이 필요하다.
보통 ‘최소’의 횟수, 금액, 개수 등을 요구한다.
그리디는 최적의 해를 보장할 수 없을 때가 많다.
그러나 대부분의 코테의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서 이를 추론할 수 있어야 문제가 풀리도록 출제된다.
그리디를 통해 해결하기 힘들다면, 다이나믹 프로그래밍이나 그래프 알고리즘으로 문제를 해결할 수 있는지를 고민하는 것도 방법이다.
2. 그리디 문제 예시
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
풀이
: 2022.04.18 - [알고리즘/Python 백준 알고리즘(BOJ)] - [백준] 2839 설탕 배달 python 알고리즘 문제
[백준] 2839 설탕 배달 python 알고리즘 문제
문제 2839. 설탕 배달 1. 나의 코드와 발상 과정 n = int(input()) new_n1, new_n2 = n, n cnt1, cnt2 = 0, 0 cnt1 += new_n1 // 5 new_n1 = new_n1 - cnt1 * 5 cnt1 += new_n1 // 3 if new_n1 % 3 != 0 : vari1..
masterpiece-programming.tistory.com
'Algorithm' 카테고리의 다른 글
[Algorithm] 힙 정렬(Heap Sort) 알고리즘(Swift 구현) (0) | 2023.02.22 |
---|---|
[Algorithm] 안정 정렬과 불안정 정렬의 차이점 (0) | 2023.02.12 |
[Algorithm] 퀵 정렬, 병합 정렬 알고리즘(Swift 구현) (0) | 2023.02.11 |
[Algorithm] 선택 정렬, 삽입 정렬 알고리즘(Swift 구현) (0) | 2023.02.07 |
[Algorithm] 1. 시간 복잡도, 공간 복잡도 (0) | 2022.04.27 |
댓글