본문 바로가기

Study for Backend/Algorithm

[Algorithm 기초연습] 그리디 알고리즘 - 거스름 돈 문제


import java.util.HashMap;
import java.util.Map;

//20240303 그리디알고리즘 - 거스름 돈 문제
    public class greedyPractice02 {
        public static void getChangeCoins(int receivedMoney, int price){
           final int[] coins = {500, 100, 50, 10, 5, 1};
            HashMap<Integer, Integer> result = new HashMap<>();

            int change = receivedMoney - price;
            int cnt = 0;

            for (int i = 0; i < coins.length; i++) {
                if (change < coins[i]){
                    continue;
                }

                int q = change / coins[i];
                result.put(coins[i], result.getOrDefault(coins[i], 0) + q);

                change %= coins[i];
                cnt += q;
            }

            System.out.println("거스름 돈 동전 개수 : " + cnt);
            for (Map.Entry<Integer, Integer> cur : result.entrySet()){
                System.out.println(cur.getKey() + " : " + cur.getValue());
            }

        }
        
        public static void main(String[] args){
            //Test code
            getChangeCoins(1000, 100);
            getChangeCoins(1234, 500);
        }
    }