728x90
동전의 갯수가 최소가 되기 위해 5원짜리를 최대한 많이 사용하여 거슬러주면된다. 하지만 여기서 핵심은 무조건 5원짜리를 가자 많이 사용한다고 최대가 되지 않는다. 예를들어 13원일 경우 5원 2개로 거슬러주면 나머지 3원은 2원 짜리로 거슬러 줄 수 없다. 따라서 5원 1개 2원 4개 총 5개의 동전이 최소가 된다.
#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
int result = 99999999;
for(int i = 0; i <= (int)floor(n / 5); i++)
{
int money = n - (i * 5);
if(money % 2 == 0)
{
result = min(result, i + (money / 2));
}
}
if(result > n)
{
cout << -1;
}
else
{
cout << result;
}
}
반응형
'알고리즘 > boj' 카테고리의 다른 글
BOJ 1449 수리공 항승 (0) | 2023.01.05 |
---|---|
BOJ 1285 동전 뒤집기 (0) | 2023.01.05 |
BOJ 16953 A -> B (0) | 2023.01.01 |
BOJ 1744 수 묶기 (0) | 2022.12.31 |
BOJ 1339 단어 수학 (0) | 2022.12.30 |