Palinedrome 숫자란 121처럼 앞뒤를 바꿔도 똑같은 (전화번호 아님) 숫자를 말한다.
이 문제에서 주의해야 할 것은 음의 정수가 포함된다는 것이다! -121을 바꿔면 121-이므로 Palinedrome 숫자가 아니다. (설명도 적어야 한다.)
First Try: Wrong Answer
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0 : return False
else:
ori = x
reverse = 0
while x:
remainder = x % 10
x = x // 10
reverse = reverse * 10 + remainder
if reverse == ori: return True
else : return False
이런 식으로 접근하려 했지만 121을 넣었을 때 False를 반환한다.
Second Try : Accepted but 0
class Solution:
def isPalindrome(self, x: int) -> bool:
ans = None
if x < 0 : ans = False
else:
ori = x
reverse = 0
while x:
remainder = x % 10
x = x // 10
reverse = reverse * 10 + remainder
if reverse == ori: ans = True
else : ans = False
return ans
이런 식으로 bool 값을 선언한 뒤 밖에서 리턴해주면 정수에서는 돌아가지만 0을 제대로 반환해주지 않는 문제가 발생한다.
0을 추가해서 해결하면 되긴 한다.
하지만 다른 방법으로 푸는 것을 찾아보았고 정말 간단한 파이썬 내장 함수가 있었다.
Solution
class Solution:
def isPalindrome(self, x: int) -> bool:
x = list(str(x))
return x == x[::-1]