ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algorithm] LeetCode 7. Reverse Integer
    Algorithm 2023. 9. 26. 00:35
    반응형

    7. Reverse Integer

    Medium


     

    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

     

    주어진 문제는 정수를 뒤집는 문제이며, 주어진 정수가 32비트 정수 범위를 벗어난다면 0을 반환해야 한다는 조건이 있습니다.

    이 문제의 특징은, 정수 오버플로우를 잘 체크해야 한다는 점 입니다.

    아래는 풀이한 Java 코드 입니다.

    solution:

    class Solution {
        public int reverse(int x) {
            int reversed = 0;
            
            while (x != 0) {
                int pop = x % 10;
                x /= 10;
    
                if (reversed > Integer.MAX_VALUE / 10 || (reversed == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
                if (reversed < Integer.MIN_VALUE / 10 || (reversed == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
                
                reversed = reversed * 10 + pop;
            }
            
            return reversed;
        }
    }

     

    Flow:

    1. reversed 변수를 초기화합니다.

    2. 입력 정수 x를 뒤집을 때, 매 반복마다 x의 마지막 자릿수를 추출하여 pop에 저장하고 x를 10으로 나눕니다.

    3. 오버플로우를 체크하기 위해 현재 reversed 값과 pop 값을 사용하여 오버플로우가 발생하는지 확인합니다. 이때, Integer.MAX_VALUE와 Integer.MIN_VALUE를 사용하여 범위를 체크합니다.

    4. 오버플로우가 발생하지 않으면 reversed에 pop을 추가하여 뒤집힌 값을 만듭니다.

    5. 모든 반복이 끝나면 뒤집힌 정수를 반환합니다.

    반응형

    댓글

Designed by Tistory.