선택은 나의 것

[BOJ 백준] 11576번 Base Conversion (Python) 본문

☽ Algorithm/BOJ

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

Algoribi 2020. 8. 13. 13:08

문제

BOJ 11576 : https://www.acmicpc.net/problem/11576

 

11576번: Base Conversion

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

www.acmicpc.net

접근

A진수를 10진수로 변환한 뒤 10진수를 B진수로 변환하며 푸는 문제이다. 어떤 진수를 10진수로 변환하는 과정은 간단한데, 문제에서 주어지는 예제를 통해 설명해보겠다.

ex)

17 8 (17진수를 8진수로 변환)

2 (A진수의 자리별 숫자)

2 16 (이때 자릿수별로 띄워서 입력하는 이유는 11진수 이상 부터는 한 자리의 수를 표현하는데 최대 두 글자까지 가능해지기 때문)

2 * 17^1 + 16 * 17^0 = 50 이다

어떤 진수(A)를 10진수로 변환하는 것은 자릿수별로 A^n을 곱해준 값을 다 더해주면 된다.

10진수를 어떠한 진수(B)로 변환하는 것 또한 간단하다. 10진수의 숫자를 B진수의 B로 나눈 나머지 값들을 역순으로 출력하면 된다.

코드

a, b = map(int, input().split())
m = int(input())
arr = list(map(int, input().split()))
num = 0
multi = 1
for i in reversed(arr):
    num += i * multi
    multi *= a
ans = []
while True:
    if int(num) == 0:
        break
    ans.append(int(num % b))
    num /= b
    print(num, end="\n")
for i in reversed(ans):
    print(i, end=" ")

 

깃 허브 주소 : https://github.com/algoribi/algorithm-study

Comments