진법 변환

import sys


def main():
    input = sys.stdin.readline

    alphabet = "01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    args = input().split()
    number_b = args[0]
    base = int(args[1])

    result = 0
    for digit in number_b:
        result *= base
        result += alphabet.index(digit)

    print(result)


main()
import sys


def main():
    input = sys.stdin.readline

    number_b, base = input().split()
    base = int(base)

    print(int(number_b, base))


main()

$b$진법을 $10$진법으로 변환하기

$b$진법에서 $i$번째 자리수 $a_i$는 $a_i \times b^i$만큼 값을 가집니다. 따라서 $b$진법으로 나타낸 수 $\overline{a_n a_{n-1} \cdots a_1 a_0}_{(b)}$는 $a_n \times b^n + a_{n-1} \times b^{n-1} + \cdots + a_1 \times b^1 + a_0 \times b^0$이 됩니다. 첫 번째 코드는 이 식을 약간 변형하여 구현한 것입니다.

두 번째 코드는 Python의 내장 함수 int가 임의의 진법을 $10$진법으로 변환하는 것을 이용했습니다.

댓글