진법 변환 2
import sys
from string import digits, ascii_uppercase
def main():
input = sys.stdin.readline
alphabet = digits + ascii_uppercase
args = input().split()
number_10 = int(args[0])
base = int(args[1])
result = []
while number_10:
number_10, digit = divmod(number_10, base)
result.append(alphabet[digit])
result = ''.join(reversed(result))
print(result)
main()
$10$진법을 $b$진법으로 변환하기
$123$을 $10$으로 나눈 나머지 $3$은 일의 자리수와 같고, 이어서 그 몫인 $12$를 다시 $10$으로 나눈 나머지 $2$는 십의 자리수와 같습니다.
이 과정을 몫이 $0$이 될 때까지 반복하면 [3, 2, 1]
을 얻을 수 있고, 이를 거꾸로 적으면 123
이 됩니다.
같은 원리로, 나누는 수를 $10$ 대신 $b$로 바꾸면 $10$진법의 수를 $b$진법으로 변환할 수 있습니다.
divmod
함수
divmod
함수는 몫과 나머지를 동시에 구할 수 있는 함수입니다.
q, r = divmod(123, 10)
그러면 q
= $12$, r
= $3$이 됩니다.
댓글