그리디 알고리즘
(Greedy Algorithm)
: 각 단계마다 하나의 답을 고르는데, 가장 좋아 보이는 답 선택을 하는 방법.
위의 그림과 같이 단순히 매 상황에서 가장 큰 값을 고르는 알고리즘이다.
대표적인 문제로 거스름돈 문제가 있다.
당신은 음식점의 계산을 도와주는 점원입니다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원 동전이 무한개 존재합니다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러주어야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다.
def solution(money):
answer = 0
# 큰 단위의 화폐부터 차례대로 확인하기
change = [500, 100, 50, 10]
remain = money
for i in change:
answer += remain // i
remain = remain % i
return answer
📋 백준 1026: 보물
: https://github.com/bmr03016/Coding-Test/blob/main/Baekjoon/%5B1026%5D%20Treasure.ipynb
📋 백준 1448: 삼각형 만들기
: https://github.com/bmr03016/Coding-Test/blob/main/Baekjoon/%5B1448%5D%20%EC%82%BC%EA%B0%81%ED%98%95%20%EB%A7%8C%EB%93%A4%EA%B8%B0.ipynb