B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
import sys
input = sys.stdin.readline
n, b = input().split()
dic = {}
num = 10
for i in range(65, 91):
dic[chr(i)] = num
num += 1
n = list(n)
n.reverse()
result = 0
for i in range(len(n)):
if n[i] in dic:
result += (dic[n[i]]) * (int(b)**i)
else:
result += (int(n[i])) * (int(b)**i)
print(result)
A~Z까지의 수를 딕셔너리에 넣고 n의 원소가 딕셔너리에 있으면 그 원소를 result에 (dic[n의원소] b진법 ** 그 때의 인덱스) 를 해준다. 그게 아니라면 (n의원소 b진법 ** 그 때의 인덱스)를 해준다.