그리디(Greedy) 알고리즘은 현재 상황에서 가장 최적인 선택을 하는 방식으로 문제를 해결하는 알고리즘입니다. 각 단계에서 지금 당장 가장 좋아 보이는 선택을 하며, 이 선택들을 모아서 전체적인 최적해를 얻습니다. 그리디 알고리즘은 항상 최적해를 보장하지는 않지만, 많은 경우에 최적 또는 근사 최적해를 빠르게 구할 수 있습니다.
그리디 알고리즘의 주요 특징:
그리디 알고리즘의 활용 예시:
파이썬 코드를 통해 그리디 알고리즘을 예시로 살펴보겠습니다. 다음은 동전의 종류와 금액이 주어졌을 때, 최소 동전 개수로 거스름돈을 주는 그리디 알고리즘 코드입니다.
def greedy_coin_change(coins, amount):
coins.sort(reverse=True) # 큰 동전부터 사용
coin_count = 0
for coin in coins:
while amount >= coin:
amount -= coin
coin_count += 1
return coin_count
# 동전 종류와 금액
coin_types = [500, 100, 50, 10]
total_amount = 1260
min_coins = greedy_coin_change(coin_types, total_amount)
print(f"{total_amount}원을 거슬러줄 때 최소 동전 개수:", min_coins)
이 코드는 주어진 동전 종류와 금액으로 최소 동전 개수를 계산하여 출력하는 그리디 알고리즘 예시입니다. 큰 동전부터 사용하여 최소 동전 개수를 찾습니다.