안녕하세요, 작가 J입니다. 오늘은 거스름돈 문제를 간단하게 해결하는 방법을 알아보겠습니다. 일상 생활에서도 유용한 이 문제를 통해 프로그래밍 실력을 키워봅시다.
[Java Festival 04] 거스름돈 문제 해결하기
거스름돈을 입력 받아 내어줘야 하는 지폐의 개수를 출력하는 프로그램을 작성하시오.
단, 최대단위는 10000원, 최소단위는 100원
문제 요약
- 입력: 총 금액을 입력받습니다.
- 출력: 입력된 총 금액에 대해 필요한 지폐의 개수를 출력합니다.
- 지폐 단위: 10,000원, 5,000원, 1,000원, 500원, 100원.
문제 분석
거스름돈을 입력받아야 하므로, 우리는 Scanner 객체를 사용할 것입니다. 이 문제는 조건문이나 반복문 없이 나누기와 나머지 연산자를 통해 간단하게 해결할 수 있습니다.
먼저 최대한 한 줄로 해결할 수 있도록 만든 코드를 소개하겠습니다.
코드 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("총금액 입력 : ");
int exMoney = sc.nextInt();
System.out.println("잔돈 : " + exMoney);
System.out.println("10000원 : " + exMoney / 10000 + "개"); // 25600 / 10000 = 2
System.out.println("5000원 : " + (exMoney % 10000) / 5000 + "개"); // 25600 % 10000 = 5600 / 5000 = 1
System.out.println("1000원 : " + (exMoney % 5000) / 1000 + "개"); // 25600 % 5000 = 600 / 1000 = 0
System.out.println("500원 : " + (exMoney % 1000) / 500 + "개"); // 25600 % 1000 = 600 / 500 = 1
System.out.println("100원 : " + (exMoney % 500) / 100 + "개"); // 25600 % 500 = 100 / 100 = 1
}
}
위 코드는 각 계산 방법을 주석으로 설명하며 최대한 한 줄로 해결하려고 했습니다. 하지만 이는 가독성이 좋지 않을 수 있습니다. 좀 더 쉽고 깔끔하게 작성해 보겠습니다.
간단하고 순차적인 코드 풀이
이번에는 좀 더 읽기 쉬운 코드를 작성해보겠습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("총금액 입력: ");
int totalAmount2 = scanner.nextInt();
int totalAmount = totalAmount2; // 계산을 위한 변수 옮기기
int tenThousand = totalAmount / 10000;
totalAmount %= 10000;
int fiveThousand = totalAmount / 5000;
totalAmount %= 5000;
int oneThousand = totalAmount / 1000;
totalAmount %= 1000;
int fiveHundred = totalAmount / 500;
totalAmount %= 500;
int oneHundred = totalAmount / 100;
totalAmount %= 100;
System.out.println("잔돈: " + totalAmount2 + "원");
System.out.println("10000원: " + tenThousand + "개");
System.out.println("5000원: " + fiveThousand + "개");
System.out.println("1000원: " + oneThousand + "개");
System.out.println("500원: " + fiveHundred + "개");
System.out.println("100원: " + oneHundred + "개");
}
}
위의 코드는 조금 길지만, 거스름돈을 구하는 방식을 차분하고 순차적으로 해결했습니다. 일단 금액을 입력받고, 입력받은 금액은 그대로 두기 위해 또 다른 변수에 옮깁니다. 그리고 각 잔돈 금액 단위로 나누고, 남은 금액을 업데이트 합니다.
마무리
이 문제를 통해 반복문 없이 간단한 계산과 나머지 연산을 활용하여 실생활의 문제를 해결하는 방법을 배웠습니다. 단순한 로직이지만, 이러한 문제 해결 능력이 실생활에서도 유용하게 쓰일 수 있음을 기억하세요.
위 문제에서도 두 풀이에 답은 없습니다. 둘 다 같은 결과를 도출해내고, 방식 또한 틀린 것은 없습니다. 다만, 어느 코드가 보는 입장에서 가독성이 좋고 해석하기 쉬운지를 감안해야 합니다. 내가 작성한 코드를 어느 누가 볼지 모르기 때문에 이를 고려하는 것이 큰 도움이 됩니다.
거스름돈 문제는 프로그래밍 입문자에게 매우 유용한 연습 문제입니다. 간단한 나눗셈과 나머지 연산을 통해 큰 문제를 작은 단위로 나누어 해결하는 법을 배울 수 있습니다. 이러한 문제 해결 능력은 더 복잡한 프로그래밍 문제를 풀 때도 큰 도움이 됩니다.
이렇게 간단한 문제부터 시작해서 더 어려운 문제를 해결할 수 있는 능력을 키워보겠습니다. 계속해서 달려보도록 하겠습니다. 감사합니다!
'프로그래밍 기초 > Java Festival' 카테고리의 다른 글
[Java Festival] 06. 수열을 이용한 계산 문제 해결하기 (0) | 2024.06.22 |
---|---|
[Java Festival] 05. 입력받은 행 개수에 따라 별 출력하기 (0) | 2024.06.22 |
[Java Festival] 03. 1부터 100까지 번갈아 더하고 빼는 문제 해결하기 (0) | 2024.06.21 |
[Java Festival] 02. 시급 계산기 구현하기: 초과 근무 시급 계산 프로그램 (0) | 2024.06.16 |
[Java Festival] 01. 다이어트 프로그램 구현하기: 목표 몸무게 달성 프로그램 (0) | 2024.06.16 |