Greedy

류기탁·2021년 12월 6일
0

CodingTest/Algorithm

목록 보기
5/22

Greedy(탐욕 기법)

현재상황에서 당장 좋은 것만 고르는 알고리즘 설계 기법
BGM : 아리아나그란데 - Greedy

개요

  • 최적해를 구하는데 주로 사용되는 근시안적인 방법이다.
  • 최적화 문제란 가능한 해들 중에서 가장 좋은(최대, 최소)해를 찾는 문제이다.
  • 여러 경우를 선택할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식이다.
  • 한번 선택한 것은 번복하지 않아서 단순하거나 제한적인 문제들에 적용된다.
  • 반드시 최적해를 구한다는 보장은 없다.

특징

  • 현재의 선택이 나중에 미칠영향은 고려하지 않는다.
  • 외우지 않아도 풀 수 있는 알고리즘이다.
  • '창의력' 이 필요하다.

조건

  • 항상 최적해로 갈 수 있음을 증명하면 항상 안전한 선택이 된다.
  • 후의 경우가 상위 배수의 전제를 갖고있어야 한다.(예 : 거스름돈 문제)

어떤 상황에서 사용하는가?

  • 단순히 현재상황에서 가장 좋은 것을 선택해도 풀 수 있는 문제
  • 문제풀이를 위한 아이디어를 떠올리고, 이것이 정당한지 검토할 수 있어야한다.
  • 바로 문제 유형을 파악하기 어려운 문제
* 손님이 지불한 금액에서 거스름 돈을 지불하는 문제에서 지폐와 동전의 개수를 최소한으로 줄이는 경우
* 배낭 짐싸기문제 
    + Knapsack 문제 유형 - 물건을 쪼갤수 없는 경우 
    + Fractional Knapsack 유형 - 부분적으로 담는 것이 허용되는 문제
profile
오늘도 행복한 하루!

0개의 댓글