이 글은 혼자 공부하면서 적어간 내용이기에 평어체로 작성되었고 틀린 내용이 있을 수 있습니다.
이 점 양해부탁드리며 틀린 내용 지적, 질문은 언제든 환영합니다!
Greedy(탐욕스러운, 욕심 많은)
탐욕 알고리즘이라고도 불리는 그리디 알고리즘은 현재의 상황에서 봤을 때 가장 최적의 답만을 골라 최종 해답에 도달하는 방법이다.
백준 5585번 문제는 지불해야 하는 돈(1000미만의 정수)을 하나 입력받고 받을 잔돈의 개수를 출력하는 문제이다.
1엔짜리 5개는 5엔, 5엔짜리 2개는 10엔으로 대체 가능하므로 액수가 가장 큰 잔돈부터 거슬러주면 최소 개수를 구할 수 있을 것이다.
👉 각 상황의 최적의 해는 주어진 잔돈 중에서 가장 큰 잔돈을 주는 것이다.
#include<iostream>
using namespace std;
int main()
{
int n, ans=0, change[6]={500, 100, 50, 10, 5, 1};
cin >> n;
n=1000-n;
for(int i=0; i<6; i++) {
ans += n/change[i]; // 잔돈의 개수
n %= change[i]; // 거슬러준만큼 빼줌
}
cout << ans;
}
https://hanamon.kr/알고리즘-탐욕알고리즘-greedy-algorithm/
https://velog.io/@kyunghwan1207/그리디-알고리즘Greedy-Algorithm-탐욕법