거스름돈 문제
5585번: 거스름돈
타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사
www.acmicpc.net
소스코드
#include <bits/stdc++.h>
using namespace std;
int coin[6] = { 500,100,50,10,5,1 };
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, ans=0;
cin >> n;
n = 1000 - n;
for (int i = 0; i < 6; i++) {
int temp = n / coin[i];
if (temp) {
ans += temp;
n %= coin[i];
}
}
cout << ans;
}
해결방법
타로가 지불한 돈은 1000엔인고 물건의 가격은 n으로 주어집니다.
최소한의 거스름돈의 개수를 원하니 그리디 알고리즘으로 생각합니다.
먼저 가장 큰 순서의 거스름돈으로 거슬러 준다고 생각하면 됩니다.
'Algorithm > greedy' 카테고리의 다른 글
| [백준] 알고리즘 1541번 - 잃어버린 괄호 문제 (0) | 2021.02.08 |
|---|---|
| [백준] 알고리즘 11399번 - ATM 문제 (0) | 2021.02.08 |
| [백준] 알고리즘 11047번 - 동전 0 문제 (0) | 2021.02.07 |
| [알고리즘 문제] 숫자 카드 게임 (0) | 2020.10.30 |
| [알고리즘 문제] - C++ 그리디 알고리즘 문제 : 큰 수의 법칙 (0) | 2020.10.29 |
