문제링크
문제
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
728x90
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
예제입력
60466175 36
예제출력
ZZZZZ
풀이
# 사용자로부터 N과 B 값을 입력 받습니다.
n, b = map(int, input().split()) # n = 60466175, b = 36
result = ''
base = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
# n이 0이 될 때까지 반복문을 실행합니다.
while n: # n = 60466175, 1669617, 45911, 1267, 34, 0 (반복이 끝난 후)
# N을 B로 나눈 나머지를 인덱스로 사용하여 base 문자열에서 해당하는 문자를 가져옵니다.
result = base[n % b] + result # result = 'Z', 'ZZ', 'ZZZ', 'ZZZZ', 'ZZZZZ'
# N을 B로 나눈 몫을 N에 할당합니다.
n //= b # n = 1669617, 45911, 1267, 34, 0 (반복 과정 중)
# 변환된 결과를 출력합니다.
print(result) # 출력: ZZZZZ
코드는 사용자로부터 주어진 10진수 n과 변환할 진법 b를 입력받고, 입력된 10진수 n을 b진법으로 변환한 결과를 출력합니다. . n이 0이 될 때까지 반복문을 실행하여 모든 변환 작업이 완료되면, 결과를 출력합니다.