문제
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
내 풀이
n, B = map(int, input().split())
remainder = []
while n > 0:
remainder.append(n%B)
n = n // B
dict1 = {k+10:chr(v) for k, v in zip(range(26), range(ord('A'), ord('Z') + 1))}
answer = ""
for x in reversed(remainder):
if x >= 10:
answer += dict1[x]
else:
answer += str(x)
print(answer)
코멘트
n진법 수를 구하려면 n으로 나눈 나머지를 역순으로 나열해야 한다. 이 때 10 미만의 수는 숫자로 표현하고 10 이상의 수를 알파벳으로 표기해야 한다.