Coding/백준

[백준] 11576 - Base Conversion - (python 파이썬)

Coding Kitsune 2022. 2. 14. 12:16

문제링크 : https://www.acmicpc.net/problem/11576

 

11576번: Base Conversion

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의

www.acmicpc.net

 

풀이과정 :

먼저 A 진법의 수를 각 자리마다 * pow(A, 지수)를 곱한뒤 total에 합산하여

10진법의 수로 변환해주었다.

그 후, 10진법 수를 기준으로 B진법으로 몇자리 수인지부터 while 문을 통해 구하고,

10진법을 pow(B, 지수)로 큰 수부터 차례로 분해하여 리스트에 차수를 저장해주었다.

 

import math
A, B = map(int, input().split())
A_num_count = int(input()) #A의 자릿수
B_num_count = 0 #B의 자릿수
A_nums = list(map(int, input().split())) #각 자리수의 차수를 저장하는 리스트
B_nums = [] #각 자리수의 차수를 저장하는 리스트
total = 0 #10진법으로 나타낸 수

for i in range(A_num_count): #A를 10진법으로 전환
    total += int(A_nums[i] * math.pow(A, (A_num_count-1)-i))

while total > math.pow(B,B_num_count):
    B_num_count += 1
for i in range(B_num_count-1, -1, -1): #10진법 수를 다시 B진법으로 전환
    if i == 0:
        B_nums.append(total)
        break
    temp = int(total//math.pow(B, i))
    B_nums.append(temp)
    total -= int(math.pow(B, i) * temp)

print(*B_nums)

답(이미지)

 

후기 : 진법 변환을 코드로 직접 짜본건 처음인데, 엄청 간단할줄 알았는데, 의외로 생각해주어야

할것이 있었다.