본문 바로가기
알고리즘 & 자료구조/알고리즘

그리디 알고리즘

by 거북이의 기술블로그 2024. 11. 26.

그리디 알고리즘이란?

그리디 알고리즘 (욕심쟁이 알고리즘)이란?
"매 선택에서 지금 이순간 당장 최적의 답을 선택하여, 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘이다.
그리디 알고리즘을 선택하면, 매 선택이 그 순간에 대해서는 최적의답이지만 그걸 종합적으로 확인해보면 최적이라는 보장이 있지 않다.

즉, 한번의 선택이 다음 선택에는 전혀 무관한 값이어야 하며 매 순간의 최적해가 문제에 대한 최적해일 때 사용해야하는 알고리즘

 

그리디 알고리즘 핵심 이론

그리디 알고리즘 수행과정

1. 해 선택 : 현재 상태에서 가장 최선이라고 생각되는 해를 선택
2. 적절성 검사 : 현재 선택한 해가 전체 문제의 제약조건에 벗어나지 않는지 검사
3. 해 검사 : 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사한다.
(전체문제를 해결하지 못한다면 다시 1번으로 돌아가 같은 과정을 반복한다)

 

구현

거스름돈을 주는 간단한 예제
 (큰 단위의 금액부터 먼저 거슬러줌) -> 최적해
public class App {
    public static void main(String[] args) throws Exception {
        int[] coins = {500, 100, 50, 10};

        int totalCost = 1230;
        int paid = 2000;

        int change = paid - totalCost;
        if(change < 0 ){
            System.out.println("금액이 부족");
            return;
        }

        for (int coin : coins){
            if(change >= coin){
                int count = change/coin;
                System.out.println(coin+ "거스름 : " + count + " 개");
                change = change%coin;
            }
        }   

    }
}

'알고리즘 & 자료구조 > 알고리즘' 카테고리의 다른 글

이진탐색  (0) 2024.11.21
[BFS] 너비 우선 탐색  (1) 2024.11.18
소수 찾기  (0) 2024.11.16
[탐색] 깊이우선탐색  (0) 2024.11.15