Q. 편의점에서 물건을 사고 거스름돈을 받으려고 한다. 거스름돈을 5000원권, 1000원권, 500원, 100원, 50원, 10원을 조합하여 받는다고 할 때, 각각 몇 장(개)씩 받게 되는지 프로그램을 작성하라. 

1) 물건가격: 3210원, 지불금액: 10000원

2) 물건가격, 지불금액을 입력하고 그에 따른 결과를 출력 (Scanner 이용)

 

< 1)에 대한 Solution_1 >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package test;
 
public class MainClass {
 
    public static void main(String[] args) {
        
        int price,myMoney,change; //지불금액, 물건가격, 거스름돈 변수 선언
        price = 3210
        myMoney = 10000;
        System.out.println("물건가격 : " + price + "원");
        System.out.println("지불금액 : " + myMoney + "원");
        change = myMoney - price; // 6790 = 10000 - 3210
        System.out.println("거스름돈 = " + change + "원");
        
        int m5000 ,m1000, m500, m100, m50, m10; // 각 지폐 및 동전 변수 선언
        m5000 = change / 5000// 몫을 계산 6790 / 5000 의 몫은 1
        m1000 = (change % 5000/ 1000// 5000원권으로 거슬러준 후 나머지에 대해 몫을 계산
        m500 = ((change % 5000) % 1000/ 500// 1000원권으로 거슬러준 후 나머지에 대해 몫을 계산
        m100 = (((change % 5000) % 1000) % 500/ 100//이하 반복
        m50 = ((((change % 5000) % 1000) % 500) % 100/ 50;
        m10 = (((((change % 5000) % 1000) % 500) % 100) % 50/ 10;
        
        // 출력
        System.out.println("5000원: " + m5000 + "장");
        System.out.println("1000원: " + m1000 + "장");
        System.out.println("500원: " + m500 + "개");
        System.out.println("100원: " + m100 + "개");
        System.out.println("50원: " + m50 + "개");
        System.out.println("10원: " + m10 + "개");
        
    }
 
}
 
cs

< Console >

 - 출력값은 틀리지 않았으나, 소스 코드 작성 부분에서 몫과 나머지를 구하는 코드가 복잡하다는 단점이 있었다. 간소화하여 다시 한번 풀어보기로 하였다.

 

< 1)에 대한 Solution_2 >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package test;
 
public class MainClass {
 
    public static void main(String[] args) {
        
        int price,myMoney,change; //지불금액, 물건가격, 거스름돈 변수 선언
        price = 3210
        myMoney = 10000;
        System.out.println("물건가격 : " + price + "원");
        System.out.println("지불금액 : " + myMoney + "원");
        change = myMoney - price; // 6790 = 10000 - 3210
        System.out.println("거스름돈 = " + change + "원");
        
        int m5000 ,m1000, m500, m100, m50, m10; // 각 지폐 및 동전 변수 선언
        
        //5000
        int m5000 = change / 5000// 6790/5000의 몫은 1
        
        //1000
        int m1000 = (change % 5000/ 1000;
        
        //500
        int m500 = (change % 1000/ 500;
        
        //100
        int m100 = (change % 500/ 100;
        
        //50
        int m50 = (change % 100/ 50;
        
        //10
        int m10 = (change % 50/ 10;    
                
        // 5000원 짜리는 모두 1000원짜리 지폐로 대체가 가능하고
        // 500원짜리 동전은 모두 100원짜리 동전으로 대체가 가능하므로 위와 같은 코드를 작성할 수 있다.
        
        // 출력
        System.out.println("5000원: " + m5000 + "장");
        System.out.println("1000원: " + m1000 + "장");
        System.out.println("500원: " + m500 + "개");
        System.out.println("100원: " + m100 + "개");
        System.out.println("50원: " + m50 + "개");
        System.out.println("10원: " + m10 + "개");
    
    }
 
}
 
cs

<  2)에 대한 Solution  >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package test;
 
import java.util.Scanner;
 
public class MainClass {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in); //Scanner class의 객체를 생성
        
        int price, myMoney, change;
        System.out.print("물건가격 : ");
        price = sc.nextInt();
        System.out.print("지불금액 : ");
        myMoney = sc.nextInt();
        
        // 거스름돈
        change = myMoney - price;
        System.out.println("거스름돈 = " + change + "원");
        
        //5000
        int m5000 = change / 5000// 6790/5000의 몫은 1
        
        //1000
        int m1000 = (change % 5000/ 1000;
        
        //500
        int m500 = (change % 1000/ 500;
        
        //100
        int m100 = (change % 500/ 100;
        
        //50
        int m50 = (change % 100/ 50;
        
        //10
        int m10 = (change % 50/ 10;    
                
        // 5000원 짜리는 모두 1000원짜리 지폐로 대체가 가능하고
        // 500원짜리 동전은 모두 100원짜리 동전으로 대체가 가능하므로 위와 같은 코드를 작성할 수 있다.
        
        // 출력
        System.out.println("5000원: " + m5000 + "장");
        System.out.println("1000원: " + m1000 + "장");
        System.out.println("500원: " + m500 + "개");
        System.out.println("100원: " + m100 + "개");
        System.out.println("50원: " + m50 + "개");
        System.out.println("10원: " + m10 + "개");
    
    }
 
}
 
cs

 

< Console >

임의로 물건가격과 지불금액을 입력한 결과

+ Recent posts