코딩테스트/백준
[백준] 11576번 : Base Conversion (Python)
알코딩
2024. 12. 27. 21:30
문제 : 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진법으로 바로 가는 건 불가능!