본문 바로가기

코딩테스트/백준

[백준] 11576번 : Base Conversion (Python)

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

 

A진법의 수를 B진법으로 변환하는 문제.

import sys

input = sys.stdin.readline

# 진법 변환기
# 10진법을 B진법으로!
def radix_to_b(N, B):
    
    tf = ''
    
    while(N > 0):
        
        tf = str(N%B)+ ' ' + tf # 나머지 숫자랑 매칭해서 
        N = (N//B) # B로 나눈 몫을 구함
        
    return tf.strip() # 역순으로 return

# 진법 변환기
# A진법을 10진법으로!
def radix_to_10(A, case):
    
    num = 0
    loc = 0
    
    for i in case[::-1]:
        
        num += (A**loc) * i # N진법의 위치 * 그 위치의 값
        loc += 1
        
    return num

A, B = map(int, input().split()) # 진법의 수 A, 진법의 수 B
N = int(input()) # 숫자 N의 자리수의 개수
case = list(map(int, input().split())) # A 진법을 이루고 있는 숫자 m개

element = radix_to_10(A, case) # 10진법으로 변환
tf = radix_to_b(element, B) # B진법으로 변환
print(tf)
 
 

[문제풀이]


 

A진법의 수를 B진법으로 바꾸려면 A진법->10진법으로 바꾸고,

그리고 10진법으로 바꾼 수를 다시 B진법으로 바꾸면 된다.

 

A진법에서 B진법으로 바로 가는 건 불가능!