B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
ZZZZZ 36
출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
60466175
☑️ 2진법을 10진법으로 변환하는 경우 생각하기
2진수(1001)를 10진수(9)로 변환하는 과정
위의 과정을 생각할 수 있다면 문제를 풀기 쉬워진다.
336진법에 해당하는 숫자와 알파벳을 담은 문자열을 만들어야 한다.
위의 과정에서보면 숫자의 오른쪽 끝 부분부터 계산하는 것을 알 수 있는데 그러기 위해서 입력받은 문자도 뒤집어야 한다.
# [2745] 진법 변환
number, changeTo = input().split()
number = number[::-1]
result = 0
char = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in range(len(number)-1, -1, -1):
total = char.index(number[i]) * (int(changeTo) ** i)
result += total
print(result)