본문 바로가기
자격증·공부 아카이브/Java 기초

Java 숫자 계산 예제: 거스름돈·반올림·구구단·세 자리 곱셈

by 쑥쑥자라나라 2026. 8. 2.
728x90

Java 숫자 계산 미니프로그램은 복잡한 알고리즘보다 정수의 몫과 나머지를 정확히 쓰는 연습이다. 거스름돈, 일의 자리 반올림, 구구단 범위 출력, 세 자리 곱셈을 직접 구현하며 계산 순서를 확인해 보자.

핵심 도구: /는 몫, %는 나머지다. 큰 단위를 먼저 처리하고 남은 값을 다음 단계로 넘긴다.

지폐를 큰 단위부터 나누고, 세 자리 수를 일·십·백의 자리로 분해하는 계산 장면

1. 거스름돈은 남은 금액을 갱신한다

int money = sc.nextInt();
int[] units = {10000, 5000, 1000, 500, 100};

for (int unit : units) {
    int count = money / unit;
    money %= unit;
    System.out.println(unit + "원: " + count + "개");
}
System.out.println("처리하지 못한 금액: " + money + "원");

원문 4처럼 단위마다 식을 따로 써도 되지만 배열로 만들면 단위가 바뀌어도 반복문은 그대로다. 각 단계가 끝날 때 money에는 아직 나누지 않은 나머지만 남는다.

2. 일의 자리에서 반올림하기

static int roundToTen(int number) {
    return Math.floorDiv(number + 5, 10) * 10;
}

양수만 다루는 입문 문제라면 (number + 5) / 10 * 10으로 충분하다. 음수까지 포함하면 Java 정수 나눗셈이 0 방향으로 버림된다는 점을 고려해야 하므로 요구 범위를 먼저 정한다.

728x90

3. 단과 끝 수를 입력받는 구구단

int dan = sc.nextInt();
int end = sc.nextInt();

if (end < 1) {
    throw new IllegalArgumentException("끝 수는 1 이상이어야 합니다.");
}
for (int i = 1; i <= end; i++) {
    System.out.printf("%d × %d = %d%n", dan, i, dan * i);
}

원문 19는 반복 횟수를 사용자가 정한다. “어느 수까지”는 마지막 값도 포함하므로 조건은 i <= end다.

4. 세 자리 곱셈을 자리별로 출력하기

int first = 472;
int second = 385;

int ones = second % 10;
int tens = second / 10 % 10;
int hundreds = second / 100;

System.out.println(first * ones);
System.out.println(first * tens);
System.out.println(first * hundreds);
System.out.println(first * second);

second % 100 / 10second / 10 % 10은 십의 자리를 얻는 같은 방식이다. 자리값을 이름 있는 변수로 분리하면 식의 의도가 더 잘 보인다.

5. 실수하기 쉬운 부분

거스름돈 단위를 작은 것부터 처리한다

큰 단위부터 처리해야 최소 개수 조합이 된다. 단위 체계가 임의라면 탐욕법이 항상 최적은 아니라는 점도 기억한다.

정수 나눗셈 순서를 바꾼다

second / 10 % 10처럼 왼쪽부터 계산되는 순서를 작은 값으로 직접 확인한다.

입력 범위를 검증하지 않는다

세 자리 문제라면 100~999인지, 거스름돈은 음수가 아닌지 먼저 검사한다.

핵심 요약
  • 큰 단위부터 몫을 구하고 나머지를 다음 단계로 넘긴다.
  • 자리 분해는 10으로 나눈 몫과 나머지를 사용한다.
  • “끝 수까지”는 반복 조건에 등호가 필요하다.
  • 문제의 입력 범위를 코드로 검증한다.
728x90