B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
B진법 수 N을 10진법으로 출력해라
각 자리수에 B의 자리수 인덱스의 승수를 곱하면 된다.
예시)
2진법: 011 -> 1 x 2^0 + 1 x 2^1 + 0 x 2^2
5진법: 324 -> 4 x 5^0 + 2 x 5^1 + 3 x 5^2
if __name__ == '__main__':
N, B = input().split()
result = 0
B = int(B)
L = len(N)
for i, n in enumerate(N):
result += B ** (L - i - 1) * (ord(n) - 55) if n.isalpha() else B ** (L - i - 1) * int(n)
print(result)
시험이 끝나고 다시 1일 1백준 시작으로 처음에는 간단한 문제를 골랐다.
진법에 대한 개념을 제대로 이해하면 풀 수 있는 문제이다.