Mahdi Shamlou | LeetCode #7 해결: Reverse Integer — 오버플로우 안전성을 갖춘 수학 기반 역전

발행: (2026년 1월 31일 오후 08:53 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

Hey everyone! Mahdi Shamlou here — continuing my LeetCode classic problems series 🚀

After solving #6 Zigzag Conversion, today we’re tackling Problem #7 — Reverse Integer — a very common easy/medium question that looks simple at first… until you remember the 32‑bit integer overflow trap!

Mahdi Shamlou | مهدی شاملو

문제 설명

부호가 있는 32‑비트 정수 x가 주어질 때, 그 자릿수를 뒤집은 값을 반환합니다. x를 뒤집은 결과가 부호가 있는 32‑비트 정수 범위 [-2³¹, 2³¹ − 1]를 벗어나면 0을 반환합니다.

환경이 64‑비트 정수를 허용하지 않는다고 가정합니다.

예시

Input:  x = 123
Output: 321

Input:  x = -123
Output: -321

Input:  x = 120
Output: 21

Input:  x = 0
Output: 0

내 풀이

자릿수별로 뒤집으면서 오버플로우를 검사합니다. 문자열 변환을 피하고 수학적으로 뒤집기를 수행합니다 — % 10으로 자릿수를 꺼내고, 뒤집힌 숫자를 만들며, 10을 곱하고 자릿수를 더하기 에 오버플로우를 확인합니다.

class Solution:
    def reverse(self, x: int) -> int:
        reversed_x = 0

        # Handle the sign separately
        sign = 1 if x >= 0 else -1
        x = abs(x)

        while x > 0:
            digit = x % 10
            x //= 10

            # Check for overflow before adding the new digit
            # 2**31 - 1 = 2147483647
            # -2**31    = -2147483648
            if reversed_x > (2147483647 - digit) // 10:
                return 0
            if reversed_x < (-2147483648 + digit) // 10:
                return 0

            reversed_x = reversed_x * 10 + digit

        return sign * reversed_x

코드는 모든 테스트 케이스를 통과하며, 실제로 오버플로우가 발생하기 에 잡아내기 때문에 깔끔합니다.

전체 솔루션은 다음 저장소에서 확인할 수 있습니다:

GitHub – mahdi0shamlou/LeetCode: Solve LeetCode Problems

시간 및 공간 복잡도

  • 시간: O(log |x|) — 각 자릿수를 한 번씩 처리합니다.
  • 공간: O(1) — 정수 변수 몇 개만 사용합니다.

결과

제출 후, 오버플로우 경우에는 올바르게 0을 반환하고, 일반 경우에는 정확히 뒤집힌 값을 반환합니다. 성공적인 제출 화면 스냅샷은 다음과 같습니다:

Mahdi Shamlou | مهدی شاملو

Back to Blog

관련 글

더 보기 »

LeetCode #347. 상위 K 빈도 요소

복잡도 분석 - 시간 복잡도: O(n log n), 정렬에 의해 지배됨 - 공간 복잡도: HashMap 및 List에 대해 O(n) Solution java class Solution { public int...

문제 10: 중복 제거

문제 설명 우리는 리스트에서 중복을 제거하면서 원래 요소들의 순서를 유지하는 함수를 필요로 합니다. 예시: `remove_duplicates` 1, 2, 2, 3...