Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 숫자 뒤집기 – 루프와 산술 연산자로 정수 반전하는 방법


이 글에서는 자바(Java)에서 정수를 뒤집어 출력하는 방법을 알아봅니다. 숫자의 역순 값은 반복문(while)과 나머지 연산자(%), 나눗셈 연산자(/)를 조합해 간단하게 계산할 수 있습니다.

입력 · 출력 예시

예를 들어 입력값이 아래와 같다면,

입력 숫자 : 123456

기대되는 출력 결과는 다음과 같습니다.

실행 결과 : 654321

알고리즘

숫자를 뒤집는 전체 과정은 다음 단계로 진행됩니다.

  1. 프로그램을 시작합니다.
  2. 정수형 변수 세 개(my_input, reverse_input, my_remainder)를 선언합니다.
  3. 사용자로부터 값을 입력받거나, 값을 미리 정의합니다.
  4. while 반복문을 실행합니다.
  5. my_input을 10으로 나머지 연산(%)한 값을 my_remainder에 저장합니다.
  6. reverse_input에 10을 곱한 뒤 my_remainder를 더하고, 그 결과를 새로운 reverse_input으로 지정합니다.
  7. my_input을 10으로 나눈 몫을 새로운 my_input으로 지정합니다.
  8. 최종 결과를 화면에 출력합니다.
  9. 프로그램을 종료합니다.

루프의 동작 원리

입력값이 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() 메서드를 사용하면 더 짧은 코드로 동일한 결과를 얻을 수 있으니, 상황에 맞게 활용해 보시기 바랍니다.