문제
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1
Input: 121
Output: true
Example 2
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow Up
Coud you solve it without converting the integer to a string?
내 풀이
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
elif x != 0 and x % 10 == 0:
return False
string_x = str(x)
if len(string_x) == 1:
return True
elif string_x[::-1] == string_x:
return True
return False
어제를 타산지석 삼아 오늘은 간단하게 풀 수 있었다. 코드가 다소 길어서 맘에 들지 않았는데, 단 한 줄짜리 코드보다 시간/메모리 효율이 더 좋은 것은 의외다. if문으로 거를 수 있는 건 다 걸러줘서 그런가보다.
어떻게 이런 생각을 하지
class Solution:
def isPalindrome(self, x: int) -> bool:
return str(x) == str(x)[::-1]
시간/메모리 효율은 다른 사람 대비 딱 중간 즈음이지만 너무 예술적으로 풀어서 이 코드는 내 블로그에 남기고 싶다.