여기서 숫자가 회문인지 아닌지 확인하는 방법을 알아보겠습니다. 회문 번호는 양방향에서 동일합니다. 예를 들어, 숫자 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