문제 : 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진법으로 바로 가는 건 불가능!
'코딩테스트 > 백준' 카테고리의 다른 글
| [백준] 1197번 : 최소 스패닝 트리 (Python) (0) | 2024.12.27 |
|---|---|
| [백준] 11653번 : 소인수분해 (Python) (0) | 2024.12.27 |
| [백준] 2745번 : 진법 변환 (Python) (2) | 2024.12.27 |
| [백준] 11005번 : 진법 변환 2 (Python) (0) | 2024.12.27 |
| [백준] 2089번 : -2진수 (Python) (1) | 2024.12.27 |