입력된 값을 가지고 있는 한정된 동전의 수로 거스름돈을 반환하는 프로그램이다.
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
'알고리즘 > 기초' 카테고리의 다른 글
주어진 배열을 시계방향으로 회전시키는 프로그램 (0) | 2023.08.07 |
---|---|
입력된 데이터를 읽고 각 숫자의 개수를 출력하는 프로그램 (0) | 2023.08.07 |
회문수(palindrome) 구하기 (0) | 2023.08.06 |
주어진 문자열을 숫자인지 판별하는 프로그램 (0) | 2023.08.06 |
피보나치 수열 (0) | 2023.08.06 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!