

처음 문제를 보자마자 들었던 생각은 딱 두가지였다.
분명 진법 변환하는 함수가 있어 이걸 활용하면 짧게 풀어질 것,
혹은 직접 진법을 변환하는 함수를 만들 것.
우선은 10진법으로 변환하는 int(n진법수, n) 함수를 활용해서 풀고
그 뒤에 직접 10진법을 변환하는 함수를 만들어 주었다.
def base_n(a, b):
return int(a,b)
n, base = input().split()
print(base_n(n, int(base)))
앞에서 말한 바와 같이 내장된 10진법 변환 함수를 활용했다.
def base_n(a, b):
input_list = list(a)
sum_list = []
for i in range(len(input_list)):
# 리스트 안에 있는 문자가 알파벳인지, 숫자인지 확인
if input_list[i].isalpha():
# 문자를 아스키 코드 값으로 변환
digit = ord(input_list[i]) - 55
sum_list.append(digit*int(b)**(len(input_list)-i-1))
else:
# 숫자를 그대로 사용
sum_list.append(int(input_list[i])*int(b)**(len(input_list)-i-1))
return sum(sum_list), sum_list
n, base = input().split()
print(base_n(n, int(base)))
N, B = input().split()
N = ''.join(reversed(N))
B = int(B)
number = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = 0
for i in range(len(N)-1, -1, -1):
sum = number.index(N[i]) * (B**i)
result += sum
print(result)
고민을 해 보고 싶으면 우선 가볍게 생각하고 그 뒤에 깊게 생각하자.
reversed()는 reversed 객체를 반환한다.
때문에 리스트, 튜플, 문자열화 하기 위해서는 다른 작업이 필요하다.
위 다른 사람 풀이에서는 문자열로 만들기 위해서 구분자 ''로 연결해주었다.
range(시작, 간격, 마지막)를 통해 반복문을 역으로 사용할 수 있다.