삽집하는 개발들/알고리즘

[111일차] 진법 변환 2 - 백준 - 11005(python - 수학, 구현)

악투 2024. 1. 21. 22:09
반응형

문제 설명

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 = map(int, input().split(" "))
answer = []

while True:
  check = n % b  
  if check >= 10:
    ord_chr = check+55
    answer.append(chr(ord_chr))
  else:
    answer.append(str(check))
    
  n = n // b  
  if n <= 0:
    break
  
print("".join(str(answer[i]) for i in range(len(answer)-1,-1,-1)))

 

이 문제는 10진법의 수를 B진법으로 바꿔 출력하는 것이다. 10진법의 수가 주어지면 뒤에 2진법이든 3진법이든

 

10진법이든  36진법 이하의 수까지 주어진 B의 값 대로 출력하여야한다.

 

일단 n의 값을 b의 값으로 n의 값이 0이 될때까지 계속 나누면서 나머지 값을 answer에 담아준다.

 

여기서 나머지값이 10이면 A, 11이면 B이런식으로 Z까지 가기때문에 ord('A') 65이다. 그러면 10부터이기때문에 55를

 

더해주면 10은 A가 된다. 

 

while문이 끝나면 answer에는 값이 들어있고 이 값을 reverse해주면 답이 된다.

 

 

 

 

 

반응형