백준 11005번 진법 변환 2 | [BACKJOON/Python / 11005]

문제링크

 

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억보다 작거나 같은 자연수이다.

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이 될 때까지 반복문을 실행하여 모든 변환 작업이 완료되면, 결과를 출력합니다.

Top