blog

9. 에코 수

정수 x가 주어집니다. x가 아이암빅 정수인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 팔린드롬은 양수 및 음수 순서 모두에서 동일하게 읽히는 정수입니다....

Oct 29, 2025 · 2 min. read
シェア

title

정수 x를 입력합니다. x가 팔린드롬 정수이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

팔린드롬은 정방향과 역방향 모두 같은 순서로 읽는 정수를 말합니다.

  • 예를 들어, 팔린드롬이 아니라 팔린드롬입니다.

예 1:

입력: x= 121
출력: true

예 2:

입력: x= -121
출력: false
설명: 왼쪽에서 오른쪽으로 읽으면 -121입니다. 오른쪽에서 왼쪽으로 읽으면 121-입니다. 따라서 팔린드롬이 아닙니다.

예 3:

입력: x= 10
출력: false
설명: 오른쪽에서 왼쪽으로 읽는 것은 01입니다. 따라서 팔린드롬이 아닙니다.

팁:

  • -231 <= x <= 231 - 1

고급: 정수를 문자열로 변환하지 않고 이 문제를 해결할 수 있나요?

문제 해결을 위한 아이디어

솔루션 1: 수학적 방법

단계:

  1. 음수 및 첫 자리가 0인 숫자는 제외합니다.
  2. 원래 숫자의 역수가 원래 숫자보다 작지 않을 때까지 단계적으로 역수를 구성합니다.
  3. 원래 숫자가 반전된 숫자와 같거나 반전된 숫자의 마지막 숫자를 제거하면 원래 숫자와 같은 경우 팔린드롬이라고 합니다.
class Solution:
 def isPalindrome(self, x: int) -> bool:
 # 음수 또는 마지막 자리가 0인 숫자는 팔린드롬이 아닙니다.
 if x < 0 or (x % 10 == 0 and x != 0):
 return False
 reversed_num = 0
 while x > reversed_num:
 reversed_num = reversed_num * 10 + x % 10
 x //= 10
 
 # 원래 번호와 역수가 같거나 역수에서 마지막 숫자가 제거된 경우 원래 번호가 같으면 반향 번호입니다.
 return x == reversed_num or x == reversed_num // 10

해결 방법 2: 문자열 방법

단계:

  1. 정수를 문자열로 변환합니다.
  2. 문자열이 그 역과 동일한지 확인합니다.
class Solution:
 def isPalindrome(self, x: int) -> bool:
 s = str(x)
 return s == s[::-1]

실행

sol = Solution()
print(sol.isPalindrome(121)) #  : True
print(sol.isPalindrome(-121)) #  : False
print(sol.isPalindrome(10)) #  : False

요약

두 가지 방법 모두 정수가 아이암빅 숫자인지 여부를 판단하는 데 효과적입니다. 수학 방식은 추가 공간을 사용하지 않으므로 공간 효율성 측면에서 문자열 방식보다 낫습니다. 그러나 문자열 메서드의 코드가 더 간결하고 이해하기 쉽습니다. 실제로 공간 효율성이 문제가 되지 않는다면 일반적으로 문자열 방식이 더 빠르고 편리한 선택입니다. 공간 제약이 있거나 허용되지 않는 경우

Read next

CSS에서 플로팅

1.전통적인 웹 레이아웃의 세 가지 방법 웹 레이아웃의 본질 ---- CSS를 사용하여 상자를 배치합니다. 그에 따라 상자를 배치하세요.CSS는 세 가지 전통적인 레이아웃 방법을 제공합니다.

Oct 29, 2025 · 3 min read