[Leet Code] 9. Palindrome Number
- 이번 포스팅에서는 Leet Code 9번 Palindrome 문제를 다룬다.
- 문제에서 제약을 하나 걸어놔서, 두가지 풀이를 올릴 예정이다.
Problem
- Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
- Follow up: Could you solve it without converting the integer to a string?
Example 1:
Input: x = 121
Output: true
Example 2:
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Solution :
# Solution 1. without converting the integer to a string
import math
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
elif x == 0:
return True
tmp_num, result, idx = x, 0, pow(10,int(math.log10(x)))
while tmp_num > 0:
result += ((tmp_num % 10) * idx)
tmp_num //= 10
idx //= 10
return result == x
- 문제에서, 정수를 문자열로 변경시키지 않고 풀어보라고 제약을 걸어두었다.
- 자리수를 구해서, 새롭게 팰린드롬 정수를 만들어 원래 정수와 같은지 비교하여 풀었다.
- 자리수는 log함수를 이용하였다.
- 풀고난 후, 파이썬 문법도 적응할 겸 문자열로 변환하여도 풀어보았다.
- 파이썬으로는 문자열로 변환한다면 한줄 코드로 풀 수 있는 문제였다..이렇게 편할줄이야
# Solution 2. with converting the integer to a string
class Solution:
def isPalindrome(self, x: int) -> bool:
return str(x) == str(x)[::-1]
댓글남기기