-
[math] 9. Palindrome-numberSW 정글/알고리즘 2024. 10. 23. 12:49
https://leetcode.com/problems/palindrome-number/description/
Given an integer x, return true if x is a palindrome, and false otherwise.
Example 1:
Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left.
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.
Example 3:
Input: x = 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Constraints:
- -231 <= x <= 231 - 1
Solution
class Solution: def isPalindrome(self, x: int) -> bool: return False if x < 0 else x == int(str(x)[::-1])
처음에 한 자리수일 때는 true, 두 자리면 같아야만 true, 이후 mid를 기준으로 left/right 자르는 방법을 생각했는데
더 간단한 방법이 있었다.
슬라이싱[::]을 사용해서 기존 x 값과 reverse값이 같은지 비교하면 됐다.
슬라이싱은 [start:end:step] 순서로, step에 -1을 넣으면 역순으로 str을 변환하니 유용하다.
*슬라이싱을 적용할 수 있는 자료형은 아래와 같이 "순서가 존재하는 연속된 시퀀스형만" 가능하다.
- 문자열 (str)
- 리스트 (list)
- 튜플 (tuple)
- 범위 (range)
따라서 int형으로 주어진 x에 대해 str으로 적용한 다음 다시 int 형변환이 필요하다.
int(str(x)[::-1])
reference
https://oneteveryday.tistory.com/224
'SW 정글 > 알고리즘' 카테고리의 다른 글
[String] 412. Fizz Buzz (0) 2024.10.23 [math] 7. Reverse Integer (0) 2024.10.23 [hash] 1. two-sum (0) 2024.10.23 1655. 가운데를 말해요 (우선순위 큐) (0) 2024.08.19 10872. 팩토리얼 (0) 2024.08.11