https://www.acmicpc.net/problem/5585
해당 문제는 1000엔에서 물건값을 뺀 후
받을 수 있는 잔돈의 최소 개수를 구하는 문제이다.
최소 동전 개수 문제는 가장 큰 동전부터 가능한 개수를 구해서 다 더하면 답이 나온다.
#include <iostream>
using namespace std;
int main(){
int N; cin>>N;
N = 1000 - N;
int answer = 0;
int num[] = {500,100,50,10,5,1};
for(int n : num){
answer += (N/n);
N %= n;
}
cout<<answer<<endl;
return 0;
}
이렇게 순간순간의 최적해를 구하는 문제가 그리디 문제이다.