728x90
https://www.acmicpc.net/problem/14916
14916번: 거스름돈
첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.
www.acmicpc.net
접근 방법
간단한 그리디 문제이다.
5원과 2원 뿐이기 때문에 5원을 빼야하는 경우와 2원을 빼야하는 경우를 잘 생각해보자.
5원이 빠질 경우는 5원을 뺐을때, 나머지가 5으로 나누어떨어지거나 2로 나누어떨어지만 5원으로 결정.
2원이 빠질 경우는 2원을 뺐을때, 나머지가 2로 나누어 떨어지면 2원으로 결정.
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int rest;
int cnt;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
rest = n;
while (rest > 0) {
if (rest-5>=0 && ((rest - 5) % 2 == 0 || (rest-5) % 5 == 0)) {
rest -= 5;
cnt++;
}
else if (rest - 2 >= 0 && ((rest - 2) % 2 == 0)) {
rest -= 2;
cnt++;
}
else {
cout << -1;
exit(0);
}
}
cout << cnt;
}
728x90
'📊알고리즘 > BOJ' 카테고리의 다른 글
[그리디 #7] BOJ 13305 - 주유소 (0) | 2024.02.10 |
---|---|
[그리디 #6] BOJ 1343 - 폴리오미노 (0) | 2024.02.10 |
[그리디 #4] BOJ 1744 - 수 묶기 (1) | 2024.02.07 |
BOJ 2170 선 긋기 (1) | 2024.02.05 |
[그리디 #3] 카드 합체 놀이 (0) | 2024.02.05 |