본문 바로가기
프로그래밍/자바의정석_5_연습문제

[5-6] 다음은 거스름돈을 몇 개의 동전으로 지불할 수 있는지를 계산하는 문제이다.

by 므시칸곰틔군 2015. 1. 5.

package Ex5;


public class Ex5_6 {


// [5-6] 다음은 거스름돈을 몇 개의 동전으로 지불할 수 있는지를 계산하는 문제이다. 변

// 수 money의 금액을 동전으로 바꾸었을 때 각각 몇 개의 동전이 필요한지 계산해서 출력하

// 라. 단, 가능한 한 적은 수의 동전으로 거슬러 주어야한다. (1)에 알맞은 코드를 넣어서

// 프로그램을 완성하시오.

// [Hint] 나눗셈 연산자와 나머지 연산자를 사용해야 한다.

// [연습문제]/ch5/Exercise5_6.java

// class Exercise5_6 {

// public static void main(String args[]) {

// // 큰 금액의 동전을 우선적으로 거슬러 줘야한다.

// int[] coinUnit = {500, 100, 50, 10};

// int money = 2680;

// System.out.println("money="+money);

// for(int i=0;i<coinUnit.length;i++) {

// /*

// (1) 알맞은 코드를 넣어 완성하시오.

// */

// }

// } // main

// }

// [실행결과]

// money=2680

// 500원: 5

// 100원: 1

// 50원: 1

// 10원: 3


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] coinUnit = { 500, 100, 50, 10 };

int money = 2680;

System.out.println("money=" + money);

for (int i = 0; i < coinUnit.length; i++) {


System.out.println(coinUnit[i] + "원: " + money / coinUnit[i]);

money = money % coinUnit[i];

}


}


// [해설] 동전의 단위를 내림차순으로 배열에 초기화한다. 금액이 큰 동전을 우선적으로 지

// 불해야 가장 적은 동전의 개수로 거스름돈을 줄 수 있기 때문이다. 그렇지 않으면, 모든

// 거스름돈을 10원짜리로만 주게 될 수도 있다.

// 변수 money를 coinUnit[i]로 나누면 지불할 동전의 개수가 되고, 나머지 연산을 하면

// coinUnit[i]로 지불하고 남은 금액이 된다. 동전단위(coinUnit배열)의 개수만큼 이 과정

// 을 반복하면 된다.

}