알고리즘/Python

[백준/Python] 11576번: Base Conversion

_SIHA_ 2022. 2. 8. 23:46

📖  문제 링크

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

 

11576번: Base Conversion

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

www.acmicpc.net

 

👩‍💻  문제풀이

 

 

문제 이해가 안되서 한참을 들여다봤다. 질문도 많은걸 보니 좀 불친절한 문제인듯하다...^^;; 

 

어쨌든 간단히 입력된 값을 설명해보자면 아래와 같다. 

 

첫번째 줄 : A는 17진법, B는 8진법을 사용한다.

두번째 줄 : A진법으로 나타낸 수의 자리수는 2개(ex. 216(17)일때 2와 16이라는 두개의 숫자로 이루어져있다는 말)

세번째 줄 : 자리수를 띄워서 나타냄

 

 

자리수가 띄워져 있지 않으면 어려울 수도 있었을텐데, 띄워져서 입력되므로 

각 자리수를 10진법으로 돌린 후, B의 진법에 따라 다시 변환해주면 된다. 

 

 

진법에 따른 변환 방식은 백준 11005, 2745번 문제와 흡사하다. (풀이는 아래 링크에)

 

https://shalog.tistory.com/37

 

[백준/Python] 2745번: 진법 변환

📖 문제 링크 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는

shalog.tistory.com

https://shalog.tistory.com/36

 

[백준/python] 11005번 : 진법 변환 2

📖 문제 링크 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없

shalog.tistory.com

 

출력 또한 입력과 마찬가지로 띄어쓰기를 해주면 된다. 

 

 

 

  최종 코드

A, B = map(int, input().split())

m = int(input())

arr = list(map(int, input().split()))
sum = 0
result = []
arr.reverse()

sum += arr[0] * 1
for i in range(1, m):
    sum += (arr[i] * (A**i))
 
while sum!=0:
    result.append(str(sum%B))
    sum = sum//B
    
result.reverse()

print(' '.join(result))