[백준] 11005 진법 변환 2

Python
avatar
2025.06.06
·
2 min read

문제

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 이상의 수를 알파벳으로 표기해야 한다.


References

https://www.acmicpc.net/problem/11005







- 컬렉션 아티클