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 / 10과 second / 10 % 10은 십의 자리를 얻는 같은 방식이다. 자리값을 이름 있는 변수로 분리하면 식의 의도가 더 잘 보인다.
5. 실수하기 쉬운 부분
거스름돈 단위를 작은 것부터 처리한다
큰 단위부터 처리해야 최소 개수 조합이 된다. 단위 체계가 임의라면 탐욕법이 항상 최적은 아니라는 점도 기억한다.
정수 나눗셈 순서를 바꾼다
second / 10 % 10처럼 왼쪽부터 계산되는 순서를 작은 값으로 직접 확인한다.
입력 범위를 검증하지 않는다
세 자리 문제라면 100~999인지, 거스름돈은 음수가 아닌지 먼저 검사한다.
핵심 요약
- 큰 단위부터 몫을 구하고 나머지를 다음 단계로 넘긴다.
- 자리 분해는 10으로 나눈 몫과 나머지를 사용한다.
- “끝 수까지”는 반복 조건에 등호가 필요하다.
- 문제의 입력 범위를 코드로 검증한다.
728x90
'자격증·공부 아카이브 > Java 기초' 카테고리의 다른 글
| Java 배열 집계와 랜덤: 최댓값·학점 빈도·중복 없는 로또 (0) | 2026.08.04 |
|---|---|
| Java 문자열 집계 문제: 알파벳 빈도·OX 점수·숫자 대시 개수 (0) | 2026.08.03 |
| Java while문 실전: 목표 달성·덧셈 게임·종료 조건 (0) | 2026.08.02 |
| Java 반복문 누적 계산: 교대 합·수열·팩토리얼 풀이 (0) | 2026.08.01 |
| Java 자릿수와 진법 변환: 숫자 합·10진수·2진수 원리 (0) | 2026.07.30 |