이 글에서는 자바(Java)에서 정수를 뒤집어 출력하는 방법을 알아봅니다. 숫자의 역순 값은 반복문(while)과 나머지 연산자(%), 나눗셈 연산자(/)를 조합해 간단하게 계산할 수 있습니다.
입력 · 출력 예시
예를 들어 입력값이 아래와 같다면,
입력 숫자 : 123456
기대되는 출력 결과는 다음과 같습니다.
실행 결과 : 654321
알고리즘
숫자를 뒤집는 전체 과정은 다음 단계로 진행됩니다.
- 프로그램을 시작합니다.
- 정수형 변수 세 개(my_input, reverse_input, my_remainder)를 선언합니다.
- 사용자로부터 값을 입력받거나, 값을 미리 정의합니다.
- while 반복문을 실행합니다.
- my_input을 10으로 나머지 연산(%)한 값을 my_remainder에 저장합니다.
- reverse_input에 10을 곱한 뒤 my_remainder를 더하고, 그 결과를 새로운 reverse_input으로 지정합니다.
- my_input을 10으로 나눈 몫을 새로운 my_input으로 지정합니다.
- 최종 결과를 화면에 출력합니다.
- 프로그램을 종료합니다.
루프의 동작 원리
입력값이 123456일 때 루프가 진행되는 과정을 단계별로 살펴보면 다음과 같습니다.
- 1회전 : 123456 % 10 = 6 → reverse_input = 0 × 10 + 6 = 6, my_input = 12345
- 2회전 : 12345 % 10 = 5 → reverse_input = 6 × 10 + 5 = 65, my_input = 1234
- 3회전 : 1234 % 10 = 4 → reverse_input = 65 × 10 + 4 = 654, my_input = 123
- 4회전 : 123 % 10 = 3 → reverse_input = 654 × 10 + 3 = 6543, my_input = 12
- 5회전 : 12 % 10 = 2 → reverse_input = 6543 × 10 + 2 = 65432, my_input = 1
- 6회전 : 1 % 10 = 1 → reverse_input = 65432 × 10 + 1 = 654321, my_input = 0 → 루프 종료
이처럼 숫자에서 한 자릿수씩 잘라내어 뒤쪽 결과값의 앞자리에 차례로 붙이는 방식으로 최종적으로 654321이 완성됩니다.
예제 1 : 사용자 입력값을 뒤집는 경우
아래 예제에서는 Scanner 객체로 사용자에게 숫자를 직접 입력받은 뒤, 해당 숫자를 뒤집어 콘솔에 출력합니다. 온라인 코딩 도구(코딩 그라운드)에서 바로 실행해 결과를 확인해 볼 수도 있습니다.
import java.util.Scanner;
public class ReverseNumber {
public static void main(String[] args) {
int my_input, reverse_input, my_remainder;
reverse_input = 0;
System.out.println("필요한 패키지가 임포트되었습니다.");
Scanner my_scanner = new Scanner(System.in);
System.out.println("Scanner 객체가 생성되었습니다.");
System.out.print("숫자를 입력하세요 : ");
my_input = my_scanner.nextInt();
while (my_input != 0) {
my_remainder = my_input % 10;
reverse_input = reverse_input * 10 + my_remainder;
my_input = my_input / 10;
}
System.out.println("입력한 숫자의 역순 값은 : " + reverse_input);
}
}실행 결과
필요한 패키지가 임포트되었습니다. Scanner 객체가 생성되었습니다. 숫자를 입력하세요 : 123456 입력한 숫자의 역순 값은 : 654321
예제 2 : 미리 정의된 값을 뒤집는 경우
아래 예제에서는 숫자가 코드 안에서 미리 정의되어 있으며, 프로그램이 실행되면 해당 값을 읽어 들여 뒤집은 결과를 콘솔에 출력합니다.
public class ReverseNumber {
public static void main(String[] args) {
int my_input, reverse_input;
my_input = 123456;
reverse_input = 0;
System.out.println("정의된 숫자 : " + my_input);
while (my_input != 0) {
int remainder = my_input % 10;
reverse_input = reverse_input * 10 + remainder;
my_input = my_input / 10;
}
System.out.println("입력한 숫자의 역순 값은 : " + reverse_input);
}
}실행 결과
정의된 숫자 : 123456 입력한 숫자의 역순 값은 : 654321
마무리
이번 글에서는 자바에서 while 루프와 나머지(%), 나눗셈(/) 연산자를 활용해 정수를 뒤집는 방법을 배웠습니다. 참고로 숫자를 문자열로 변환한 뒤 new StringBuilder(String.valueOf(num)).reverse() 메서드를 사용하면 더 짧은 코드로 동일한 결과를 얻을 수 있으니, 상황에 맞게 활용해 보시기 바랍니다.