백준 문제풀이(BOJ PS)

[백준(BOJ)] 5585번 거스름돈 C++

팜준 2022. 7. 4. 22:59

문제 : https://www.acmicpc.net/problem/5585

 

5585번: 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사

www.acmicpc.net

아주 기초적이고 대표적인 그리디 알고리즘의 예시

#include <iostream>
using namespace std;

int coin[] = {500, 100 ,50, 10, 5, 1};

int main(){
    int money;
    cin >> money;
    int realMoney = 1000 - money;
    int cnt=0;

    for(int i=0; i <=5;i++){
        cnt += realMoney/coin[i];
        realMoney %= coin[i];
    }

    cout << cnt;


}

문제이다.

살짝 다른 점이라면 1000원에서 입력받은 금액을 뺀 금액을 거슬러주는 것이다.

당연히 가장 적은 숫자의 화폐로 거슬러 줘야 하기 때문에 큰 단위의 화폐부터 계산을 하면 쉽게 해결된다.

 

1. 화폐의 정보를 담는 int형 배열에 화폐의 금액을 담는다.

2. 금액을 입력받은 후 1000엔에서 뺀 금액을 사용한다.

3. for문을 순회하며 금액에서 화폐를 나눈 몫만큼 화폐의 개수를 의미하는 cnt를 증가시키고, 금액은 나머지 연산을 통해 재설정한다.

4. for문을 마친 후 cnt를 출력한다.

 

https://github.com/farmJun/Algorithm_BOJ_PS/blob/main/%EA%B7%B8%EB%A6%AC%EB%94%94%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/5585.cpp

 

GitHub - farmJun/Algorithm_BOJ_PS: 백준 알고리즘 문제풀이 기록 레포짓입니다.

백준 알고리즘 문제풀이 기록 레포짓입니다. Contribute to farmJun/Algorithm_BOJ_PS development by creating an account on GitHub.

github.com