Leetcode#1_Reverse Integer_02w03 by SOMJANG

솜씨좋은장씨

·

2020. 2. 20. 01:43

Given a 32-bit signed integer, reverse digits of an integer.

 

Example 1

Input: 123
Output: 321

Example 2

Input: -123
Output: -321

Example 3

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

 

Solution by SOMJANG

class Solution:
    def reverse(self, input_num: int) -> int:
        input_num_str = str(input_num)
        input_num_str = list(input_num_str)

        if input_num_str[0] == '-':
            input_num_str_new = input_num_str[1:]
            input_num_str_new = reversed(input_num_str_new)
            input_num_str_new = ''.join(input_num_str_new)
            answer = '-' + input_num_str_new

        else:
            input_num_str = reversed(input_num_str)
            answer = ''.join(input_num_str)
            
        if int(answer) > 2 ** 31 or int(answer) < (-2) ** 31:
            return 0
        else:
            return int(answer)

Soultion 풀이

입력 받은 숫자를 string 으로 변환하고 비교가 쉽도록 list로 변환

 

list로 변환한 값들 중 가장 첫번째 값이 '-' 일 경우

> 가장 첫 번째 '-'를 제외한 나머지를 따로 추출

> 그 추출한 값을 reversed 메서드를 통해 반대로 정렬함

> 이를 다시 str로 합쳐줌

> 그 앞에 '-'를 다시 붙여줌

 

list로 변환한 값들 중 가장 첫번째 값이 '-'가 아닐 경우

> reversed 메서드를 통해 반대로 정렬

> 이를 다시 str로 합쳐줌

 

이렇게 위에서 만들어진 answer 문자열을 int(answer) 를 통해 정수형으로 형 변환을 실시해주고

이 값이 -2^31 보다 작거나 2^31보다 클 경우

> 0을 return 하고

그렇지 않을 경우

> int(answer)를 return 하도록 함