Leetcode 문제 풀이이다. C++를 사용하여 해당 사이트의 문제들을 풀어나갈 예정이다.
description : Given an integer x, return true if x is a palindrome, and false otherwise.

설명을 해석하면 정수 x 값이 회문이면 참으로 반환하고 그렇지 않으면 거짓으로 반환하는 문제이다.


먼저 회문이란 설명과 같이 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 숫자, 문자열을 말한다.
if (x < 0) { // - number
return false;
}
먼저 회문에는 음수가 나올 수 없기 때문에 x 값이 음수인 경우는 false를 반환해주었다.
while (x > 0 || x != 0) {
number_reverse = (number_reverse * 10) + (x % 10);
x /= 10;
}
그 다음으로 x가 양수이거나 0이 아닐 경우, 문자열을 뒤집는 코드를 작성해서 문자열을 반전 시켜주었다.
// even case compare
return number_reverse == save_the_original_x; // True return.
원래 x의 값과 뒤집은 x의 값이 값을 경우, True를 반환하게 코드를 작성해서 회문인지 아닌지 판별하는 문제를 해결할 수 있었다.
// 전체 코드
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) { // - number
return false;
}
long number_reverse = 0;
int save_the_original_x = x;
// reversing the x
while (x > 0 || x != 0) {
number_reverse = (number_reverse * 10) + (x % 10);
x /= 10;
}
// even case compare
return number_reverse == save_the_original_x; // True return.
}
};
전체 코드는 위와 같다.
처음 파이썬 reverse 함수를 사용하지 않고, C++를 이용해서 숫자를 반전시키는데 시간을 많이 사용한 문제였던 것 같다. 아직 C++의 기본기가 많이 부족한 것 같다는 것을 느꼈다.