Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 정수 뒤집기: 32비트 부호 있는 역정수 구현 방법

32비트 부호 있는(signed) 정수가 하나 주어졌다고 가정해 보겠습니다. 이 숫자의 자릿수를 거꾸로 뒤집어야 합니다. 예를 들어 숫자가 425라면 출력은 524가 됩니다. 숫자에는 부호가 붙을 수 있으므로 음수도 함께 처리해야 합니다. 따라서 입력이 -425라면 출력은 -524가 되어야 합니다.

문제의 전제 조건

이 문제에서는 값이 32비트 부호 있는 정수 범위 안에 있다고 가정합니다. 유효한 범위는 [-231, 231 − 1], 즉 [-2147483648, 2147483647]입니다. 뒤집은 결과가 이 범위를 벗어나 오버플로우가 발생하면 함수는 0을 반환해야 합니다.

풀이 접근 방식

이 문제는 파이썬의 문자열 슬라이싱을 활용하면 간단하게 해결할 수 있습니다. 풀이 과정은 다음과 같습니다.

  1. 주어진 정수를 문자열(str)로 변환합니다.
  2. 문자열의 첫 번째 문자가 '-'인지 확인하여 음수 여부를 판별합니다.
  3. 음수라면 부호를 제외한 나머지 부분만 뒤집고, 앞에 '-'를 다시 붙입니다.
  4. 양수라면 문자열 전체를 그대로 뒤집습니다.
  5. 결과를 정수형(int)으로 변환한 뒤 32비트 정수 범위에 포함되는지 검사하고, 범위를 벗어나면 0을 반환합니다.

파이썬 구현 예제

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        x = str(x)
        if x[0] == '-':                 # 음수인 경우
            a = int('-' + x[-1:0:-1])   # 부호를 제외하고 뒤집은 후 '-'를 붙임
            if a >= -2147483648 and a <= 2147483647:
                return a
            else:
                return 0
        else:                           # 양수인 경우
            a = int(x[::-1])            # 문자열 전체를 뒤집음
            if a >= -2147483648 and a <= 2147483647:
                return a
            else:
                return 0

ob1 = Solution()
print(ob1.reverse(-425))

입력

print(ob1.reverse(-425))

출력

-524

핵심 포인트 정리

  • x[::-1] : 문자열 전체를 끝에서부터 처음까지 거꾸로 가져오는 파이썬 슬라이싱 기법입니다.
  • x[-1:0:-1] : 마지막 문자부터 두 번째 문자까지만 역순으로 가져옵니다. 첫 번째 문자(부호 '-')를 제외하기 위해 사용됩니다.
  • 오버플로우 처리 : 뒤집은 값이 32비트 정수 범위([-2147483648, 2147483647])를 벗어나면 반드시 0을 반환해야 합니다. 이는 코딩 테스트에서 자주 놓치기 쉬운 부분이니 반드시 확인하세요.