그리디(greedy)

yellow·2021년 4월 16일

알고리즘 개념

목록 보기
1/6

Greedy Algorithm

  • 모든 선택지를 고려하지 않고, 각 단계마다 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다.
  • 가장 직관적인 알고리즘 설계 패러다임이다.

그리디 알고리즘의 정당성 증명

  • 탐욕적 선택 속성(greedy choice property)
    : 각 단계에서 탐욕적으로 내리는 선택이 항상 최적해로 가는 길 중 하나이다.
  • 최적 부분 구조(optimal substructure)
    : 부분 문제의 최적해에서 전체 문제의 최적해를 만들 수 있다.
    각 단계마다 어떻게 선택할 것인지 정해주어야 한다.

코딩테스트에서의 그리디

  • 사전 지식 없이도 풀 수 있는 문제도 많지만, 많은 유형을 접해보고 문제를 풀어보면서 훈련을 해야한다.
  • 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 것이기 때문에 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 알게 모르게 제시해준다고 한다.
    따라서 정렬 알고리즘과 짝을 이뤄서 출제되는 경우가 자주 있다.

참고

이것이 코딩 테스트다 with 파이썬
2021 ICPC 신촌 겨울 알고리즘 캠프 greedy 강의록

profile
할 수 있어! :)

0개의 댓글