CS 공부/알고리즘

Greedy Algorithm (그리디 알고리즘, 탐욕법) 개념 정리 & 문제 추천

앞으로 코딩테스트를 준비하며 공부하는 알고리즘 유형에 대해서 정리를 해보고, 관련된 문제들을 정리해보려고 한다.

1. 그리디 알고리즘이란?

그리디 알고리즘이란 말그대로 Greedy(탐욕)이라는 이름 그대로 지금 당장 최적인 답을 선택하는 과정을 반복하여 결과를 도출하는 알고리즘이다.

일반적인 그리디 알고리즘은 문제를 풀기위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다.

  → 그리디 알고리즘의 해법은 정당성 분석, 최적의 해를 구할 수 있는지 검토하는 것이 중요하다.

 

일반적인 상황에서는 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많지만, 코딩테스트는 그리디 알고리즘을 활용해서 만들어질 수 있도록 문제를 출제하므로 OK 인것.

 

2. 그리디 알고리즘 예시  (이코테 내용 정리)

가장 대표적인 예시인 '거스름돈 예시'

가장 대표적인 예시로는 거스름돈 예시가 있다.

최적의 해를 빠르게 구하기 위해서는 가장 큰 화폐 단위부터 돈을 거슬러주면 되기 때문이다.

(100원 5개500원 1개를 비교해보자, 동전의 최소 개수를 위해서는 큰 단위부터 주는 것이 가장 효율적이다.)

 

정당성 분석이 매우 중요하다.

최적의 해가 항상 보장될 수 있는지 고민해보는 것이 중요하다.

3. 주의점

그리디 알고리즘은 만족하는 적합한 해를 찾는 방법이지 최적의 해를 찾는 방법은 아니다.

최적의 해를 찾기 위해서는 동적계획법(Dynamic Programming)을 사용한다.

 

4. 문제 추천

11047번 동전 0

2875번 대회 Or 인턴

10610번 30

1783번 병든 나이트

11000번 강의실 배정

1931번 회의실 배정

11399번 ATM

2217번 로프

13458번 시험감독

1946번 신입 사원

4796번 캠핑

1541번 잃어버린 괄호

12845번 모두의 마블

2873번 롤러코스터

1744번 수 묶기

1700번 멀티탭 스케줄링

1969번 DNA

13305 주유소

 

: 해당 문제들에 대해서는 나도 풀면서 풀이를 정리해보고자 한다.

 

[참고자료]

이코테 코딩테스트 - 2. 그리디 & 구현

Greedy Algorithm(그리디 알고리즘) 개념, 추천 문제

그리디 알고리즘(Greedy Algorithm) 및 백준 문제 추천