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

Java로 회문(Palindrome) 확인하기 – 숫자와 문자열 검증 방법

회문(Palindrome)은 거꾸로 읽어도 원래와 동일한 값이 되는 수 또는 문자열을 의미합니다. 대표적인 예로 121, 313, 525 같은 숫자나 "aba", "wow" 같은 문자열이 있습니다.

이 글에서는 Java를 사용해 숫자가 회문인지, 그리고 문자열이 회문인지 확인하는 두 가지 방법을 소개합니다.

1. 숫자 회문 확인하기

숫자의 회문 여부는 다음과 같은 과정으로 확인할 수 있습니다.

  • 숫자를 10으로 나눈 나머지(% 연산자)를 이용해 마지막 자릿수부터 하나씩 추출합니다.
  • 추출한 자릿수를 역순으로 조합해 새로운 값을 만듭니다.
  • 원래 값과 뒤집은 값을 비교하여 같으면 회문입니다.

예제 코드

public class Palindrome {
    public static void main(String[] args) {
        int a = 525, revVal = 0, remainder, val;
        val = a;
        System.out.println("Number to be checked = "+a);
        while( a != 0 ) {
            remainder = a % 10;
            revVal = revVal * 10 + remainder;
            a /= 10;
        }
        if (val == revVal)
            System.out.println("Palindrome!");
        else
            System.out.println("Not a palindrome!");
    }
}

실행 결과

Number to be checked = 525
Palindrome!

위 코드에서는 525를 뒤집어도 525가 되므로 "Palindrome!"이 출력됩니다. 반면 123처럼 뒤집었을 때 321이 되어 원래 값과 달라지는 숫자는 "Not a palindrome!"이 출력됩니다.

2. 문자열 회문 확인하기

문자열의 경우 StringBuffer 클래스가 제공하는 reverse() 메서드를 활용하면 간단하게 처리할 수 있습니다. 문자열을 뒤집은 후 equals() 메서드로 원본과 비교하면 됩니다.

예제 코드

public class Demo {
    public static void main (String[] args) {
        String str = "ABA";
        String strRev = new StringBuffer(str).reverse().toString();
        if (str.equals(strRev))
            System.out.println("Palindrome!");
        else
            System.out.println("Not a Palindrome!");
    }
}

실행 결과

Palindrome!

"ABA"는 앞뒤 어느 방향으로 읽어도 같으므로 회문으로 판별됩니다.

정리

숫자 회문은 나머지 연산과 몫 연산을 반복하며 자릿수를 역순으로 재조합하는 방식으로 확인하고, 문자열 회문은 StringBuffer.reverse()를 이용해 손쉽게 판별할 수 있습니다. 상황에 맞는 방법을 선택해 활용해 보시기 바랍니다.