minhui study
백준 14916번 거스름돈(Python, C++) 본문
https://www.acmicpc.net/problem/14916
거스름돈을 못주는 경우는 5원보다 적고 2의 배수가 아닌 경우이므로 1원과 3원일때는 거슬러 줄 수 없다.
그리고 가장 최소의 갯수로 거슬러 주어야 하므로 큰 수인 5부터 나누지만 5로 나눈 나머지가 홀수인 경우에는 나머지에서 5원을 더해주어 5원 대신 나머지+5원을 2원으로 거슬러 주면 된다.
<python>
n = int(input())
o = n % 5
if(n==1 or n==3):
result = -1;
elif(o%2==0):
result=n//5+o//2
else:
result=((n//5)-1)+((o+5)//2)
print(result)
<C++>
#include<iostream>
using namespace std;
int main() {
int n, result;
cin >> n;
int o = n % 5;
if (n == 1 || n == 3) {
result = -1;
}
else if (o % 2 == 0) {
result = n / 5 + o / 2;
}
else {
result = ((n / 5) - 1) + ((o + 5) / 2);
}
cout << result;
return 0;
}
'백준 문제풀이 > 그리디 알고리즘' 카테고리의 다른 글
백준 11297번 통나무 건너뛰기(Python, C++) (1) | 2020.08.20 |
---|---|
백준 11508번 2+1세일(Python, C++) (0) | 2020.08.20 |
백준 14720번 우유축제(Python, C++) (0) | 2020.08.20 |
백준 10162번 전자레인지(Python, C++) (0) | 2020.08.19 |
백준 1138번 한 줄 서기(Python, C++) (0) | 2020.08.19 |
Comments