


10진수를 N진수로 변환하는 가장 직관적인 방법은 10진수를 N으로 직접 나눠보는 것이다.
몫이 0일 될 때까지 나누고 나머지는 기록한 뒤 나머지의 역순으로 숫자를 나열해보면 N진수의 수가 된다.
def solution(number, base):
# 빈 str 객체를 만들어준다
reversed_base_num = ''
# 10진수의 몫이 0이 되기 전까지 계속 반복한다.
while number > 0:
# 나눗셈 결과에 몫을 기존 10진수 변수인 number에 업데이트해준다.
number, r = divmod(number, base)
# 나머지가 9보다 큰 경우는 알파벳으로 변형해주어야 한다. 아스키 코드 변환 함수를 사용했다.
if r > 9:
r = chr(55+r)
# 업데이트되는 나머지를 만들어준 str 객체에 넣어준다.
reversed_base += str(r)
# 나머지 모음을 뒤집어서 결과를 반환해준다.
return reversed_base_num[::-1]
N, B = map(int, input().split())
print(solution(N, B))
# annotation을 활용해 매개변수의 자료형태를 정해주었다.
def base_conversion(x: int, r: int) -> str:
reversed_base_num = ""
# 아스키 코드 변환 함수를 사용하지 않고 직접 숫자와 문자를 변수로 지정해주었다.
dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
while x > 0:
# 나머지는 str 객체에 더해주고
reversed_base_num += dchar[x%r]
# 기존 인자로 받아준 수는 몫으로 업데이트 해주었다.
x //= r
# 앞선 코드와 마찬가지로 순서를 뒤집어 주었다.
return d[::-1]
책을 보면서 더 짧은 코드를 추가해보았다.
1) divmod()
2) [::-1]