본문 바로가기
공부하며놀자/프로그래밍

[leetcode] 7. Reverse Integer

by 테너토너 2021. 1. 15.

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

 

Example 1:

Input: x = 123 Output: 321

Example 2:

Input: x = -123 Output: -321

Example 3:

Input: x = 120 Output: 21

Example 4:

Input: x = 0 Output: 0

 

Constraints:

  • -231 <= x <= 231 - 1

가장 중요한 부분은 실제 일의 자리 값을 빼와서 더해주기 전에 값을 비교하는 부분이다.

이건 누구꺼 참고했는데, 그 솔루션을 다시 찾으려니 못찾겠다.

class Solution:
    def reverse(self, x: int) -> int:
        INT_MAX = 2**31-1 #2147483647
        INT_MIN = -2**31 #2147483648
        INT_MIN_REV = -8463847412
        print("INT_MAX: ", INT_MAX)
        print("INT_MIN: ", INT_MIN)
        if x == INT_MIN_REV:
            return INT_MIN
        
        remainder = abs(x)
        result = 0
        
        while remainder:
            remainder, digit = divmod(remainder, 10)
            if result > INT_MAX // 10 or result == INT_MAX // 10 and digit >7:
                return 0
            if result < INT_MIN//10 or result == INT_MIN //10 and digit <-8:
                return 0
            
            result = digit + result*10
            
        if x<0:
            result = -result
            
        return result
        

 

반응형

댓글