알고리즘 연습/구현, 문자열

[🥉1 / 백준 11005 / 파이썬] 진법 변환 2

김세진 2021. 10. 18. 23:34
반응형

 

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

 

문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

출력

첫째 줄에 10진법 수 N을 B진법으로 출력한다.

 

예제 입력 

60466175 36

예제 출력 

ZZZZZ

 

풀이

 

n을 b로 나눈 나머지가 각 자리에 표시할 수에 해당한다.

위 숫자가 10 이상일 경우 자리에 맞는 알파벳을 출력하고, 아닐 경우 그대로 출력하면 된다.

단, 역순으로 출력해야 하므로 스트링이나 배열에 담은 뒤 반대로 출력해야 한다.

 

나눈 나머지를 구한 뒤엔 실제로 나눈 몫을 n에 치환해주고, n이 0이 될때까지 반복한다.

 

n,b = map(int,input().split())
ans = ""
while n!=0:
    a = n % b
    if a >= 10:
        ans += chr(a+55)
    else:
        ans += str(a)
    n //= b
print(ans[::-1])
반응형