-
[Algorithm] LeetCode 7. Reverse IntegerAlgorithm 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. 모든 반복이 끝나면 뒤집힌 정수를 반환합니다.
반응형'Algorithm' 카테고리의 다른 글
[Algorithm] LeetCode 238.product-of-array-except-self (0) 2023.10.10 [Algorithm] LeetCode 217.contains-duplicate (0) 2023.10.10 [Algorithm] LeetCode 121. Best Time to Buy and Sell Stock (0) 2023.09.30 [LeetCode] 추천 75 문제 및 알고리즘 공부 방법 (0) 2023.09.30 [Algorithm] LeetCode 57. Insert Interval (0) 2023.01.21