ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [math] 7. Reverse Integer
    SW 정글/알고리즘 2024. 10. 23. 13:53

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

     

    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

    풀이

    class Solution:
        def reverse(self, x: int) -> int:
            
            sign = -1 if x < 0 else 1
            
            reverse_num = str(abs(x))[::-1]
            
            result = sign * int(reverse_num)
    
            if result < -2**31 or 2**31 < result:
                return 0
    
            return result

     

     

    https://marchislike.tistory.com/248

    ⬆️앞서 적용했던 슬라이싱 방법을 사용하면 간단할 것 같은데,

    문제는 example3을 보았을 때, 변환한 뒤 앞자리에 0이 존재한다면 0을 제거해야 하는 점이다.

    그런데 찾아보니 파이썬에서 문자열을 int형으로 변환하면 자동으로 0이 제거된다고 한다..!

     

    그래서 처음에 무지성으로 이렇게 구현을 해서 돌렸다가..

    class Solution:
        def reverse(self, x: int) -> int:
            return int(str(x)[::-1])

     

    오히려 음수일 경우 부호 처리에 대한 부분을 빼먹었다.

    -123을 입력하면 321- 가 아니라 -321이 나와야 한다.

     

     

    그래서 reverse num을 저장한 후 해당 reverse num에 대해 다시 부호를 처리해 줘야 한다.

    sign = -1 if x < 0 else 1

    x가 음수라면 sign = -1 을 넣어줘서 나중에 reverse_num에 곱해서 음수로 만들어준다.

    값은 절대값으로 받아야겠다.

     

     

    int x에 대해 절대값 abs()으로 받은 후 str으로 형변환하여 슬라이싱을 사용할 수 있도록 한다.

    reverse_num = str(abs(x))[::-1]

     

     

     

    최종 값에 대해 다시 int형으로 변환한다.

    result = sign * int(reverse_num)

     

     

    마지막으로 정수 범위 지정에 대한 리턴값도 처리해야 한다.

    >> If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.

     

    if result < -2**31 or 2**31 < result:
    	return 0

     

    'SW 정글 > 알고리즘' 카테고리의 다른 글

    [String] 14. Longest Common Prefix / startswith() 함수  (0) 2024.10.23
    [String] 412. Fizz Buzz  (0) 2024.10.23
    [math] 9. Palindrome-number  (0) 2024.10.23
    [hash] 1. two-sum  (0) 2024.10.23
    1655. 가운데를 말해요 (우선순위 큐)  (0) 2024.08.19
Designed by Tistory.