본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 11576번: Base Conversion -Python

728x90

[백준알고리즘] 11576번: Base Conversion -Python

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

 

11576번: Base Conversion

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 세계에서도 프로그래밍을 하고 싶었던 정이는 백준 사이트에 접속하여 문제를 풀기로 하였다. 그러나 미래세계는 A진법을 사용하고 있었고, B진법을 사용하던 정이는 문제를 풀 수가 없었다. 뛰어난 프로그래머였던 정이는 A진법으로 나타낸 숫자를 B진법으로 변환시켜주는 프로그

www.acmicpc.net

A진법의 수를 m자리만큼 입력받아 B진법의 수로 표현하는 문제이다. 이 문제를 처리하기 위해서 < A진법 -> 10진법 -> B진법 > 순서대로 변환을 해줄 것이다.

 

A진법을 우선 10진수로 바꾸기 위해서 입력받은 수에 연산을 해준다. 1의 자리부터 순서대로 A^0, A^1, A^2... 값들을 각 자리의 수와 곱한 합을 구해주면 된다.

 

이 수를 B진법으로 바꾸기 위해서는 10진법으로 변환한 수를 B로 계속 나누며 나눈 나머지만 계속 구하면 된다.

 

import sys
input = sys.stdin.readline

A, B = map(int, input().split())
m = input()
before = list(map(int, input().split()))

total = 0
power = 0
for b in before[::-1]:
    total += (b * (A ** power))
    power += 1

after = []
while total:
    after.append(str(total % B))
    total //= B

sys.stdout.write(' '.join(after[::-1]))

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90