All Articles

LeetCode - 9번 Palindrome Number

LeetCode 9번 Palindrome Number

문제

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]

시간/메모리 효율은 다른 사람 대비 딱 중간 즈음이지만 너무 예술적으로 풀어서 이 코드는 내 블로그에 남기고 싶다.