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

xianxbabx·2023년 4월 24일
0

알고리즘

목록 보기
13/14

문제

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

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

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

입력

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

출력

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

예제 입력 1

60466175 36

예제 출력 1

ZZZZZ

나의 코드

n, b = map(int, input().split())
number = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
answer = ''
while n != 0:
    answer += str(number[n % b])
    n //= b
    
print(answer[::-1])

해석

진법 나오는 문제는 어려워서 해설을 참고해서 풀어보았다.
일단 n, b 모두 정수이기 때문에 map 함수로 분리해주고, number에 10진법 넘어가는 상황까지 해결하기 위해서 담아주었다.
n(몫)이 0이 될때까지 while문으로 돌리고, n을 b로 나눈 값을 number에서 찾고 거꾸로 출력해서 읽으면 된다.

💡예제에서 n이 60466175인데, b인 36으로 나눈 몫이 35라서 Z가 나옴. 이 문제로 진법 문제를 조금이나마 이해할 수 있게 되었당. 어려워~~~

0개의 댓글