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

Java로 회문(Palindrome) 숫자 판별하는 방법 완벽 가이드

이 글에서는 주어진 숫자가 회문(Palindrome)인지 확인하는 방법을 자세히 알아보겠습니다. 회문이란 앞에서 읽으나 뒤에서 읽으나 동일한 단어, 숫자, 문구 또는 문자열을 의미합니다. 예를 들어 'malayalam' 같은 단어나 '10101' 같은 숫자가 대표적인 회문입니다.

문자열을 뒤집었을 때 원래 문자열과 같다면 그 문자열은 회문이라고 할 수 있습니다. 즉, 회문 여부를 확인하려면 첫 번째 요소와 마지막 요소, 두 번째 요소와 뒤에서 두 번째 요소가 서로 일치하는지 검사하면 됩니다.

아래는 실제 실행 결과를 보여주는 예시입니다.

입력

Enter the number : 454

출력

The number 454 is palindrome number

알고리즘

Step 1 - 시작
Step 2 - my_input, my_reverse, my_sum, my_temp 네 개의 정수 변수를 선언
Step 3 - 사용자로부터 값을 입력받거나 직접 값 정의
Step 4 - while 반복문과 '*', '%', '/' 연산자를 사용해 입력값의 역순 계산
Step 5 - my_temp % 10을 계산하여 my_reverse에 저장
Step 6 - (my_sum * 10) + my_reverse를 계산하여 my_sum에 저장
Step 7 - my_temp / 10을 계산하여 my_temp에 저장
Step 8 - 위 과정을 반복한 후 입력값과 my_sum이 같은지 비교. 같으면 회문 숫자, 아니면 회문이 아님
Step 9 - 결과 출력
Step 10 - 종료

예제 1: 사용자 입력으로 확인하기

다음 예제는 사용자가 직접 숫자를 입력하면 해당 숫자가 회문인지 판별합니다. 코딩 환경 도구에서 직접 실행해 볼 수도 있습니다.

import java.util.Scanner;
public class Palindrome {
   public static void main(String args[]){
      int my_input, my_reverse, my_sum, my_temp;
      System.out.println("Required packages have been imported");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("A reader object has been defined ");
      System.out.print("Enter the number : ");
      my_input = my_scanner.nextInt();
      my_sum = 0;
      my_temp = my_input;
      while ( my_temp > 0 ){
         my_reverse = my_temp%10;
         my_sum = (my_sum * 10) + my_reverse;
         my_temp = my_temp / 10;
      }
      if( my_input == my_sum )
         System.out.println("The number " +my_input +" is palindrome number ");
      else
         System.out.println("The number " +my_input +" is not palindrome number ");
   }
}

출력 결과

Required packages have been imported
A reader object has been defined
Enter the number : 454
The number 454 is palindrome number

예제 2: 미리 정의된 값으로 확인하기

이번 예제는 정수값이 코드 안에 미리 정의되어 있으며, 이 값을 콘솔에 출력하고 회문 여부를 판별합니다.

public class Palindrome {
   public static void main(String args[]){
      int my_input, my_reverse, my_sum, my_temp;
      my_input = 454;
      System.out.println("The number is defined as " +my_input);
      my_sum = 0;
      my_temp = my_input;
      while ( my_temp > 0 ){
         my_reverse = my_temp%10;
         my_sum = (my_sum * 10) + my_reverse;
         my_temp = my_temp / 10;
      }
      if( my_input == my_sum )
         System.out.println("The number " +my_input +" is palindrome number ");
      else
         System.out.println("The number " +my_input +" is not palindrome number ");
   }
}

출력 결과

The number is defined as 454
The number 454 is palindrome number

핵심 정리

회문 판별의 핵심은 나머지 연산자(%)와 나눗셈 연산자(/)를 활용해 숫자를 한 자리씩 분리한 뒤, 이를 역순으로 조합하는 것입니다. 역순으로 만든 숫자(my_sum)와 원래 입력값(my_input)이 일치하면 회문입니다. 이 방식은 문자열 변환 없이 순수하게 산술 연산만으로 처리할 수 있어 효율적이며, 면접이나 코딩 테스트에서도 자주 등장하는 기본 알고리즘이므로 꼭 익혀두시기 바랍니다.