여기서 숫자가 회문인지 아닌지 확인하는 방법을 알아보겠습니다. 회문 번호는 양방향에서 동일합니다. 예를 들어, 숫자 12321은 회문이지만 12345는 회문이 아닙니다.
논리는 매우 간단합니다. 우리는 숫자를 반대로 해야 하며, 반대로 된 숫자가 실제 숫자와 같으면 회문이고 그렇지 않으면 그렇지 않습니다. 더 나은 아이디어를 얻기 위해 알고리즘을 살펴보겠습니다.
알고리즘
isPalindrome(n) -
입력 - 숫자 n
출력 - 숫자가 회문이면 true, 그렇지 않으면 false
begin temp := n rev := 0 while n > 0, do rev := rev * 10 + (n mod 10) n := n / 10 done if rev = temp, then return true return false end
예시
#include <iostream>
using namespace std;
bool isPalindrome(int number) {
int temp = number;
int rev = 0;
while(number > 0){
rev = 10 * rev + number % 10; //take the last digit, and attach with the rev number /= 10;
}
if(rev == temp)
return true;
return false;
}
int main() {
int n = 12321;
if(isPalindrome(n)){
cout << n << " is palindrome number";
} else {
cout << n << " is not a palindrome number";
}
} 출력
12321 is palindrome number