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

Python에서 숫자를 뒤집는 2가지 방법 (문자열 변환 vs 수학적 연산)

정수를 뒤집는 것은 비교적 간단한 작업입니다. 하지만 실제 개발 과정에서는 알고리즘 문제 풀이나 데이터 처리 등 다양한 상황에서 숫자의 자릿수를 역순으로 바꿔야 하는 경우가 종종 발생합니다.

입력: 12345
출력: 54321

Python에서 숫자를 뒤집는 방법은 크게 두 가지가 있습니다.

  • 숫자를 문자열로 변환한 후 문자열을 뒤집고, 다시 정수로 변환하는 방법

  • 문자열 변환 없이 수학적 연산만으로 뒤집는 방법

방법 1: 문자열로 변환하여 뒤집기

이 방법은 별도의 복잡한 로직 없이 Python의 슬라이싱 기능을 활용하기 때문에 가장 직관적이고 구현이 쉽습니다. 숫자를 문자열로 변환한 뒤 [::-1] 슬라이싱으로 문자열을 역순으로 만들고, 마지막에 int() 함수를 사용해 다시 정수형으로 변환하면 됩니다.

예제 코드

def reverse(num):
    st = str(num)
    revst = st[::-1]
    ans = int(revst)
    return ans

num = 12345
print(reverse(num))

실행 결과

54321

코드가 짧고 가독성이 좋아 대부분의 일반적인 경우에 이 방법을 추천할 수 있습니다. 다만 입력값에 음수나 소수점이 포함될 경우에는 별도의 예외 처리가 필요합니다.

방법 2: 수학적 연산으로 뒤집기

이 방법은 나머지(%)와 정수 나눗셈(//) 연산자를 활용한 수학적 논리가 필요합니다. "문자열 변환 없이 숫자를 뒤집으시오"라는 제약 조건이 있는 코딩 테스트나 인터뷰 문제에서 자주 요구되는 방식입니다.

동작 원리는 다음과 같습니다. 먼저 num % 10으로 마지막 자릿수를 추출하고, 결과값에 10을 곱한 후 해당 자릿수를 더합니다. 그다음 num // 10으로 이미 처리한 자릿수를 제거하고, 숫자가 0이 될 때까지 이 과정을 반복합니다.

예제 코드

def reverse(num):
    rev = 0
    while num > 0:
        digit = num % 10
        rev = (rev * 10) + digit
        num = num // 10
    return rev

num = 12345
print(reverse(num))

실행 결과

54321

두 방법의 비교 및 정리

구분문자열 변환 방식수학적 연산 방식
구현 난이도매우 쉬움논리 이해 필요
코드 길이짧음약간 김
추천 상황일반적인 코드 작성코딩 테스트, 제약 조건이 있는 문제

두 방법 모두 시간 복잡도는 자릿수에 비례하므로 성능 차이는 미미합니다. 코드의 간결함이 중요하다면 문자열 변환 방식을, 면접이나 시험에서 논리적 사고를 보여줘야 한다면 수학적 연산 방식을 선택하는 것이 좋습니다.