티스토리 뷰


문제

 

11576번: Base Conversion

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

www.acmicpc.net


풀이

거창하지만 사실 별거 없다.

A진법 수를 10진법으로 변환한 후 10진법 수를 B진법으로 변환하면 된다.

 

주의해야 할 점은

 

10진법 수를 B진법으로 변환할 때, 삽입했던 수의 반대로 정렬해야 하는데 무작정 반대로 정렬해버리면 

예를 들어, 2 15 16을 정렬할 때, 16 15 2가 돼야 하는데, 61 51 2가 되기 때문에,

우선 리스트에 삽입 후 [::-1]로 정렬 해야 한다.

 

또한 출력 시 수를 자릿수에 따라 공백을 포함해 출력해야 한다.

붙여서 출력해서 4번 틀림

 

import math # pow라는 n제곱을 쉽게 해주는 내장함수 이용을 위함

a, b = map(int, input().split())    # a진법의 수를 b진법으로
n = int(input())    # n자리수인 a진법 수
lists = list(map(int, input().split()))
ten = 0	# 10진법으로 만든 수
result = []
fin = ''

for i in range(n):
    ten += int(lists[i] * math.pow(a, n - i - 1))

while ten:
    nam = ten % b
    result.append(str(nam))
    ten = ten // b

result = result[::-1]
fin = ' '.join(result)	# 절 대 띄 어 쓰 기 삽 입 해
print(fin)

 

반응형
댓글