본문 바로가기
알고리즘 문제 풀이

그리디 알고리즘

by 달리는 꿈나무 2023. 2. 12.

당장 좋은 것만 선택하는 그리디

 그리디 알고리즘은 단순하지만 강력한 문제 해결 방법이다. 어떠한 문제가 있을 때 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘이다. 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 그리지 알고리즘을 이용하면 매순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.

 코딩 테스트에서 만나게 될 그리디 알고리즘의 문제 유형을 앞으로 다루게 된 알고리즘과 비교했을 때 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형이라는 특징이 있다. 반면 이후에 공부할 정렬, 최단 경로 등의 알고리즘 유형은 이미 그 알고리즘의 사용 방법을 정확히 알고 있어야만 해결 가능한 경우가 많다.

 예를 들어 여러 개의 데이터를 빠르게 정렬해야하는 문제는 정렬 라이브러리의 사용 방법을 알고 있어야한다. 또 다른 예시로 최단 경로를 빠르게 찾아야하는 문제는 플로이드 워셜 혹은 다익스트라 알고리즘과 같은 특정 알고리즘을 미리 알고 있거나 팀 노트를 통해 준비해야 풀 수 있다. 참고로 다익스트라 알고리즘은 엄밀히 말하면 그리디 알고리즘으로 분류되므로, 그리디 알고리즘이면서도 암기가 필요한 알고리즘이다. 다만 그리디 알고리즘 자체가 문제 출제의 폭이 매우 넓기 때문에 다익스트라 알고리즘과 같은 특이 케이스를 제외하고는 단순 암기를 통해 모든 문제를 대처하기 어렵다는 점을 이해하자.

 이외에도 그리디 알고리즘 유형의 문제는 매우 다양하기 떄문에 암기한다고 해서 항상 잘 풀 수 있는 알고리즘 유형이 아니다. 많은 유형을 접해보고 문제를 풀어보며 훈련을 해야한다.

 보통 코딩 테스트에서 출제되는 그리디 알고리즘 유형의 문제는 창의력, 즉 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. 특정한 문제를 만났을 때 단순히 현재 상황에서 가장 좋아 보이는 것만을 선택해고 문제를 풀 수 있는 지를 파악할 수 있어야한다.

 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 가장 큰 순서대로, 가장 작은 순서대로와 같은 기준을 알게 모르게 제시해준다. 대체로 이 기준은 정렬 알고리즘을 사용했을 때 만족시킬 수 있으므로 그리디 알고리즘 문제는 자주 정렬 알고리즘과 짝을 이루어 출제된다.

 

대표적인 문제들: 거스름돈, 큰 수의 법칙, 숫자 카드 게임

'알고리즘 문제 풀이' 카테고리의 다른 글

구현  (0) 2023.02.12