#BOJ 2745 진법 변환
N, B = input().split()
N = list(N)
N = N[::-1]
decimal_num = 0
for i in range(len(N)):
if 65 <= ord(N[i]) and ord(N[i]) <= 90:
N[i] = ord(N[i]) - 55
decimal_num += int(N[i])*(int(B)**i)
else:
decimal_num += int(N[i])*(int(B)**i)
print(decimal_num)
코드 설명
우선 N
을 리스트로 만들고, 일의 자리 숫자부터 계산하기 위해 리스트를 뒤집어준다.
리스트에 들어있는 것이 아스키코드로 65~90, 즉 알파벳 대문자인 경우 55만큼 빼서 A=10, B=11, ... , Z=35
로 계산될 수 있도록 한다.
계산은 일반적인 10진법 변환 계산과정과 같다.
해당 코드로 풀어도 맞기는 하지만.. 실행시간이 매우 오래 걸린다.
N, B = input().split()
print(int(N, int(B)))
int(변환할 숫자, n진법)
파이썬의 경우int()
를 활용하여 간단하게 n진법을 10진법으로 변환 가능