본문 바로가기
관리자

Computer Science/Algorithm

[LeetCode] 7. Reverse Integer

728x90
반응형

1. 문제

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


Constraints:

-231 <= x <= 231 - 1

 


2. 배운점

 

join은 iterable만 받고, map의 결과가 iterable이다.

 

list comprehension을 하기 위해서 str으로 변환한뒤, int(x)를 적용해서 list of integer를 만들 수 있다.

 

for문을 돌면서 list를 splice하면 다음 index에서는 splice로 줄어든 list에 for문의 로직을 적용한다.

 


3. 풀이

 

리팩토링 안함

class Solution:
    def reverse(self, x: int) -> int:
        is_negative = False
        # 크기 체크
        if x > 2**31 - 1 or x < -2**31:
            return 0
        # 음수 체크
        if x < 0:
            x = -x
            is_negative = True
        # 0 체크
        if x == 0:
            return 0
        # list로 reverse
        result = list(reversed([int(x) for x in str(x)]))
        # 앞단에 0제외
        for el in result:
            if el == 0:
                result = result[1:]
            else:
                break
        result = int(''.join(map(str, result)))
        if is_negative:
            return -result
        else:
            return result

 

참조

 

https://leetcode.com/problems/reverse-integer/

 

728x90
반응형