본문 바로가기
코딩 공부

Leetcode 9. PalinDrome Number (대칭수) Python 파이썬

by 카우보이연구소 2022. 2. 6.

요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다.

 

문제: Palindrome Number
등급: Easy

내용: 11, 151, 121, 1001 같은 대칭수인지를 확인하라.

<코드>

class Solution(object):
    def isPalindrome(self, x):
        if x == 0:
            return True
        
        if x < 0:
            return False
        
        x = str(x)
        length = len(x)
        if length <= 3:
            return x[-1] == x[0]
        
        half = length // 2
        
        if length % 2:
            return x[0:half-1][::-1] == x[-half+1::]
        
        return x[0:half][::-1] == x[-half::]
        
        # 7// 2= 3 [[0:3-1] == [3+1:length-1]]
        # 8// 2 =4 0~7 [0:4] == [4:length-1]

<논리>

우선, x== 0이면 True, 음수의 경우는 모두 False이다 ('-' 때문에).

 

나는, x 정수를 string으로 바꿔서 길이를 확인해서 절반씩 갈라서 비교하는 방법을 선택했다.

 

length <= 3이면 첫번쨰와 마지막 숫자만 비교해서 확인하는 방법도 넣었다.

 

홀수일 경우:

(중간 수 직전까지의 string)을 reverse한 string을 중간 수 직후의 string을 비교하게 했다.

짝수일 경우:

(중간 수까지의 string)을 reverse한 string을 중간 수 후의 string을 비교하게 했다.

[코드에 마지막 comment example 참고]

 

꽤나 괜찮다고 생각했는데, 훨씬 간단한 방법이 있었다.

<두번째 코드>

class Solution(object):
    def isPalindrome(self, x):
        return False if x < 0 else x == int(str(x)[::-1])

x<0, 음수면 False고, 0또는 0 보다 크다면 전체 정수를 뒤집어서 원래 것과 비교하면 된다. 

 

아..

<오류, 힘들었던 점>

내 원래 첫번쨰 코드로 적는데 계속 안 풀렸던 것이, string[0:2]를 하면 string의 index 0,1만 된다는 점... 왜 나는 2까지 나온다고 생각했을까.

 

<총평 외 comment>

Happy coding!

 

Palindrome Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

'코딩 공부' 카테고리의 다른 글

Leetcode 14. Longest Prefix  (0) 2022.02.09
Leetcode: 13. Roman to Integer - Python  (0) 2022.02.08
Leetcode Climbing Stairs Python 풀이  (0) 2022.02.05
Leetcode Pow(x,n) 파이썬  (0) 2022.02.04

댓글