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

Python으로 3진수 문자열을 10진수 정수로 변환하는 방법

0, 1, 2만으로 구성된 3진법 숫자를 나타내는 문자열 s가 주어졌을 때, 이를 동일한 값을 가지는 10진수 정수로 변환하는 문제입니다.

예를 들어 입력이 "10122"라면 출력은 98이 되어야 합니다.

접근 방법

이 문제는 호너의 방법(Horner's method)과 유사한 방식으로 효율적으로 해결할 수 있습니다. 문자열을 왼쪽부터 오른쪽으로 한 자릿수씩 읽으면서, 누적값에 3을 곱한 뒤 현재 자릿수를 더해주면 됩니다.

  • 누적값 ans를 0으로 초기화합니다.
  • 문자열 s의 각 자릿수 c에 대해 다음을 반복합니다.
    • ans = 3 × ans + c
  • 모든 자릿수를 처리한 후 최종 ans를 반환합니다.

구현 예제

class Solution:
    def solve(self, s):
        ans = 0
        for c in map(int, s):
            ans = 3 * ans + c
        return ans

ob = Solution()
print(ob.solve("10122"))

입력

"10122"

출력

98

동작 과정 상세 설명

입력 "10122"가 어떻게 처리되는지 단계별로 살펴보겠습니다.

  • 초기 상태: ans = 0
  • '1' 처리: ans = 3 × 0 + 1 = 1
  • '0' 처리: ans = 3 × 1 + 0 = 3
  • '1' 처리: ans = 3 × 3 + 1 = 10
  • '2' 처리: ans = 3 × 10 + 2 = 32
  • '2' 처리: ans = 3 × 32 + 2 = 98

검산해 보면 1×81 + 0×27 + 1×9 + 2×3 + 2×1 = 81 + 9 + 6 + 2 = 98로 올바른 결과임을 확인할 수 있습니다.

추가 팁: 내장 함수 활용하기

실무에서는 Python의 내장 함수 int()를 사용하면 한 줄로 간단히 변환할 수 있습니다.

result = int("10122", 3)  # 결과: 98

int(s, 3)은 두 번째 인자로 진법을 지정하여 해당 진수의 문자열을 10진수 정수로 변환해 줍니다. 알고리즘 학습 목적이라면 위의 직접 구현 방식을, 실용적인 코드 작성에는 내장 함수를 활용하는 것이 좋습니다.