[C++][백준 14916] 거스름돈

PublicMinsu·2024년 3월 14일

문제

접근 방법

5로 나누어지면 5원짜리로만 계산할 수 있는 것이다.
마찬가지로 2로 나누어지면 2원짜리로만 계산할 수 있는 것이다.

코드

#include <iostream>
using namespace std;
int n, answer = 100000, cnt;
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    cin >> n;

    if (!(n % 5))
    {
        answer = n / 5;
    }
    else
    {
        while (n > 0)
        {
            if (!(n % 2))
            {
                answer = n / 2 + cnt;
            }

            ++cnt;
            n -= 5;
        }
    }

    cout << (answer == 100000 ? -1 : answer);
    return 0;
}

풀이

5와 나눌 수 있는지 확인하고 나눌 수 있으면 5로 나눈 값을 적용해 준다.
나눌 수 없다면 5를 빼주면서 5원의 개수를 추가하고 2로 나눌 수 있는지 확인한다. 2로 나눌 수 있다면 5원의 개수와 2로 나눈 값을 더해준 값을 적용한다.

5원을 가장 많이 쓰는 것이 이득임을 생각하면 당연한 일이다.

profile
연락 : publicminsu@naver.com

0개의 댓글