본문 바로가기

Algorithm/Greedy

(C++) - 백준(BOJ) 14916번 : 거스름돈

반응형

https://www.acmicpc.net/problem/14916

 

14916번: 거스름돈

첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.

www.acmicpc.net

greedy 문제였습니다

 

📕 풀이방법

📔 입력 및 초기화

변수 n을 선언 후 입력받습니다.

 

📔 풀이과정

 1. 만들 수 없는 경우는 1과 3뿐입니다. 그 이상부터는 짝수는 2로, 5가 포함된다면 홀수도 나타낼 수 있기 때문에 표현가능합니다. 따라서 이 경우에는 -1을 출력합니다.

 

 2. 나머지는 최소로 나타내기 위해 최대한 5를 사용하면 되므로 n을 5로 나눈 나머지가 짝수인지 홀수인지 여부에 따라 답이 나뉩니다.

  2-1. 짝수인 경우 5로 나눠준 몫 + 5로 나눈 나머지를 2로 나눈 몫이 답이 됩니다.

  2-2. 홀수인 경우 5로 나눠준 몫 - 1 + (5로 나눈 나머지 + 5)를 2로 나눈 몫이 답이 됩니다.

 

📔 정답출력

조건에 따른 답을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int n;

int main(){
    cin >> n;
    if(n == 1 || n == 3) { cout << -1; return 0;}
    if(n % 5 % 2) cout << n / 5 - 1 + (n % 5 + 5) / 2;
    else cout << n / 5 + n % 5 / 2;
}