알고리즘/기초

거스름 돈 계산하기

leegeonwoo 2023. 8. 7. 14:33

입력된 값을 가지고 있는 한정된 동전의 수로 거스름돈을 반환하는 프로그램이다.

 

1. money를 동전단위로 나누어서 필요한 동전의 개수를 coinNum변수에 저장한다.

(1230원일 경우 500 -> 2, 200 -> 2, 30->3)

coinNum = money / coinUnit[i]

 

2. 보유한 동전에서 사용한 coinNum만큼을 뺀다, 만약 coin[](보유한동전)보다 coinNum이 크다면 보유한 동전만큼만 뺀다.

if(coin[i] >= coinNum) {

coin[i] = coin[i] - coinNum;

}else {

coinNum = coin[i];

coin[i]=0;

}

3. 금액(money)에서 동전의 개수(coinNum)와 동전단위(coinUnit)를 곱한값을 뺀다.

money -= (coinNum * coinUnit[i]);

 

 

 

전체코드

 

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

 

System.out.println("금액을 입력해주세요");

int money = sc.nextInt();

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

 

int[] coinUnit = {500, 100, 50, 10}; //코인의 단위

int[] coin = {5, 5, 5, 5}; //보유한 동전

 

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

int coinNum = 0;

coinNum = money / coinUnit[i];

if(coin[i] >= coinNum) {

coin[i] = coin[i] - coinNum;

}else {

coinNum = coin[i];

coin[i]=0;

}

money -= (coinNum * coinUnit[i]);

 

 

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

}

 

if(money > 0) { // 모든 coinUnit을 사용후에도 money가 남아있다면 거슬러줄돈이 없음

System.out.println("거스름돈이 부족합니다");

System.exit(0);

}

System.out.println("=남은 동전의 개수 =");

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

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

}

 

}

}

 

출력결과

금액을 입력해주세요

3170

money: 3170

500원:5

100원:5

50원:3

10원:2

=남은 동전의 개수 =

500원: 0

100원: 0

50원: 2

10원: 3

 

728x90