본문 바로가기
Algorithm

[Algorithm] 2. 그리디 알고리즘(Greedy)

by DuncanKim 2022. 4. 27.
728x90

 

[Algorithm] 2. 그리디 알고리즘(Greedy)

 

 

1. 개념과 접근 방법

 

1) 개념

 

: 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다.

 

 

2) 접근 방법

 

일반적으로 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요한다. 특정 문제를 만났을 때 단순히 현재 상황에서 가장 좋아 보이는 것만을 선택해도 문제를 풀 수 있는지를 파악할 수 있어야 한다.

 

이를 위해 정당성 분석이 가장 중요하다. 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는 지 검토하여야 한다.

 

다양한 아이디어를 떠올려보면서 고민을 해야 하고 창의적 발상을 통한 가정과 그 풀이 방법에 대한 검증이 필요하다.

 

 

보통 ‘최소’의 횟수, 금액, 개수 등을 요구한다.

 

그리디는 최적의 해를 보장할 수 없을 때가 많다. 

그러나 대부분의 코테의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서 이를 추론할 수 있어야 문제가 풀리도록 출제된다.

 

그리디를 통해 해결하기 힘들다면, 다이나믹 프로그래밍이나 그래프 알고리즘으로 문제를 해결할 수 있는지를 고민하는 것도 방법이다.

 

 

2. 그리디 문제 예시

 

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

풀이

: 2022.04.18 - [알고리즘/Python 백준 알고리즘(BOJ)] - [백준] 2839 설탕 배달 python 알고리즘 문제

 

[백준] 2839 설탕 배달 python 알고리즘 문제

문제 2839. 설탕 배달 1. 나의 코드와 발상 과정 n = int(input()) new_n1, new_n2 = n, n cnt1, cnt2 = 0, 0 cnt1 += new_n1 // 5 new_n1 = new_n1 - cnt1 * 5 cnt1 += new_n1 // 3 if new_n1 % 3 != 0 : vari1..

masterpiece-programming.tistory.com

 

728x90

댓글