[이코테] 3. 그리디 알고리즘이란?
Algorithm/이코테2021

[이코테] 3. 그리디 알고리즘이란?

반응형

 

 

 

그리디(Greedy) 알고리즘

 

그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미.

  • 일반적인 그리디 알고리즘은, 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구함.
    • 나중에 배우게될 크루스칼 알고리즘이나 다익스트라 알고리즘과 같이 잘 알려진 알고리즘을 제외하고,
      일반적으로 그리디 알고리즘이 출제가 되면
      해당 문제를 풀기위한 최소한의 아이디어를 적절히 떠올려야 풀 수 있게 출제됨
  • 그리디 해법은 정당성 분석이 매우 중요.
    • 주어진 상황에서 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토하는 과정이 필요.

 

 

 

예시

[문제 상황]

맨 위 노드부터 시작해서 거쳐가는 노드의 합을 최대로 만들고자 함.    최적의 해는 무엇인가?

 

그리디 알고리즘의 선택.

위 그림 처럼, 그리디 알고리즘은 해당 순간에 가장 좋아보이는 선택을 한다.

시작 노드에서 다음 노드로 갈 때, 7, 10, 8 중에 10이 가장 좋아보이므로 10을 선택한다.

그리고 4, 3중에 4가 가장 좋아보이므로 4를 선택한다. (총합 : 5 + 10 + 4 = 19)

 

 

하지만, 최적의 해는 아래 그림과 같다.

최적의 해

총합 : 5 + 7 + 9 = 21

 

 

 

코딩 테스트에서 그리디 알고리즘

실 생활에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많음.

프로그램 개발 시에 그리디 알고리즘은 최적의 해에 가까운 값을 얻거나 최적의 해를 보장할 때 사용함.

 

하지만, 코딩 테스트에서 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황이며,

이를 '추론' 할 수 있어야 풀리도록 출제됨.

 

 

그리디 유형 대표 문제

아래 그리디 유형 대표 문제들은 각각 포스팅 하도록 하겠다.

  1. 거스름 돈
  2. 1이 될 때 까지
  3. 곱하기 혹은 더하기
  4. 모험가 길드

 

 

 

 

 

 

이코테 2021 시리즈 씹어먹기 by 조랭이떡

시리즈 목차

더보기
  1. 코딩테스트 출제 경향 및 알고리즘 성능 평가
  2. 파이썬 문법 부수기
    1. 수, 리스트 자료형
    2. 문자열, 튜플, 사전, 집합 자료형
    3. 기본 입출력
    4. 조건문
    5. 반복문
    6. 함수와 람다 표현식
    7. 자주 사용되는 표준 라이브러리
  3. 그리디
    1. 그리디 알고리즘이란?
    2. 거스름돈
    3. 1이 될 때 까지
    4. 곱하기 혹은 더하기
    5. 모험가 길드
  4. 구현
  5. DFS & BFS (추후링크)
  6. 정렬 알고리즘 (추후링크)
  7. 이진 탐색 (추후링크)
  8. 다이나믹 프로그래밍 (추후링크)
  9. 최단 경로 알고리즘 (추후링크)
  10. 기타 그래프 이론 (추후링크)
  11. 코딩 테스트에서 자주 출제되는 기타 알고리즘 (추후링크)
  12. 개발형 코딩 테스트 (추후링크)

 

반응형