3. 진법 변경하기
10진수를 다른 진법으로 변경하거나 다른 진법의 숫자를 10진수로 변경하라는 문제가 나온다면 이 유형입니다. 다른 진법에서 10진수로 변경할 때는 int(<표현 숫자>, <숫자 진법>) 표기법을 사용해 별다른 조치 없이 바로 변환할 수 있지만, 10진수에서 다른 진법으로 바꿀 때는 이야기가 다릅니다. 파이썬에서는 기본적으로 자주 사용하는 2진법 bin(), 8진법 oct(), 16진법 hex() 함수를 지원하지만, 이 외의 진법은 따로 함수로 구현해야 합니다.
def radixChange(num, radix):
if num == 0: return '0'
nums = []
while num:
num, digit = divmod(num, radix)
nums.append(str(digit))
return ''.join(reversed(nums))
문자열을 이야기하는데 왜 갑자기 숫자가 등장하는 걸까요? 10진수의 경우 숫자 그대로 사용하면 되지만, 그 외의 진법으로 만들어진 숫자는 문자열이 되기 때문에 이 숫자를 사용하려면 변환이 필요합니다. 단순한 문자열이면 모를까 진법 숫자는 자릿수 하나하나가 중요하기 때문에 이 점을 이용하여 문제를 출제합니다. 진법으로 만들어진 문자열 자체를 다루는 문제도 있기 때문에 변환 코드는 외워둡시다.