Eggs Sunny Side Up
본문 바로가기
Algorithm/Java Festival

[Java Festival] 지폐의 개수 출력

by guswn100059 2023. 2. 26.

첫 번째 시도)

틀린 코드ㅠㅜ

import java.util.Scanner;

public class P_04 {

	public static void main(String[] args) {
		
		/* 거스름돈을 입력 받아 내어줘야 하는 지폐의 개수를 출력.
		 * 단, 최대단위는 10,000원, 최소단위는 100원
		 */
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("총 금액 입력 : ");
		int bill = sc.nextInt();
		
		System.out.println();
		
		System.out.println("잔돈 : "+bill);
		
		int result1 = (bill/10000);
		System.out.println("10,000원 : "+result1+"개");
		
		int result2 = ((bill-bill/10000*10000)/5000);
		System.out.println("5,000원 : "+result2+"개");
		
		int result3 = (bill-(bill/10000*10000)-5000)/1000;
		System.out.println("1,000원 : "+result3+"개");
		
		int result4 = (bill-(bill/10000*10000)-5000-(bill-(bill/10000*10000)-5000)/1000*1000)/500;
		System.out.println("500원 : "+result4+"개");
		
		int result5 = ((bill-(bill/10000*10000)-5000-(bill-(bill/10000*10000)-5000)/1000*1000)-(bill-(bill/10000*10000)-5000-(bill-(bill/10000*10000)-5000)/1000*1000)/500*500)/100;
		System.out.println("100원 : "+result5+"개");
		

	}

}

=> 하지만 이 방법은 가독성이 떨어지고 동일구문이 반복됨.

 

두 번째 코드)

이것도 틀린 코드...ㅜㅠ

import java.util.Scanner;

public class P_04_다른풀이 {

	public static void main(String[] args) {
		
		/* 거스름돈을 입력 받아 내어줘야 하는 지폐의 개수를 출력.
		 * 단, 최대단위는 10,000원, 최소단위는 100원
		 */
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("총 금액 입력 : ");
		int bill = sc.nextInt();
		
		System.out.println();
		
		System.out.println("잔돈 : "+bill);
		
		int result1 = (bill/10000);
		System.out.println("10,000원 : "+result1+"개");
		
		int a = (bill-bill/10000*10000);
		
		int result2 = (a/5000);
		System.out.println("5,000원 : "+result2+"개");
		
		int result3 = (a-5000)/1000;
		System.out.println("1,000원 : "+result3+"개");
		
		int b = a-5000;
		
		int result4 = (b-b/1000*1000)/500;
		System.out.println("500원 : "+result4+"개");
		
		int c = b/1000*1000;
		
		int result5 = (b-c-((b-c)/500*500))/100;
		System.out.println("100원 : "+result5+"개");
		

	}

}

=> 동일구문을 변수로 담아서 코드작성.

 

세 번째 시도)

올바른 코드!

import java.util.Scanner;

public class P_04 {

	public static void main(String[] args) {
		
		/* 거스름돈을 입력 받아 내어줘야 하는 지폐의 개수를 출력.
		 * 단, 최대단위는 10,000원, 최소단위는 100원
		 */
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("총 금액 입력 : ");
		int bill = sc.nextInt();
		
		int a = bill/10000;
		System.out.println("10,000원 : "+a+"개");
		
		int b = bill%10000/5000;
		System.out.println("5,000원 : "+b+"개");
		
		int c = bill%5000/1000;
		System.out.println("1,000원 : "+c+"개");
		
		int d = bill%1000/500;
		System.out.println("500원 : "+d+"개");
		
		int e = bill%500/100;
		System.out.println("100원 : "+e+"개");

	}

}

=> 첫 번째 두 번째 코드가 너무 더티하고 틀린 코드였어요ㅋㅋ

그래서 좀 더 단순화시켜 생각해보았어요.

화폐 단위의 나머지에서 구하고자 하는 단위를 나누어 매수를 구했어요.

참고자료

 

댓글