[백준/파이썬] 2745 진법 변환

#문제링크

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

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

#나의풀이

import sys

if __name__ == '__main__':
    B, number = sys.stdin.readline().split()
    B = B[::-1]
    value = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    result = 0

    for i in range(len(B)):
        result += value.index(B[i]) * (int(number) ** i)
    print(result)

#해설

값을 입력받고 진법 변환할때 1의자리부터 해야하는데 문자열이라 뒤집어서 0번째 인덱스부터 다룰수 있도록 해주었다.

value에 값들을 넣고 인덱스 위치로 값이 몇을 나타내는지 확인할 용도로 만들어놓았다.

 

반복문을 돌면서 B[i] 값에 따라 value에서 몇번째 인덱스 인지 확인해 값을 나타냈고 진법 계산에 따라 입력받은 number **i를 해주었다 

#여담

    print(int(B, int(number)))

파이썬에서는 그냥 변환을 지원해준다 int(바꿀숫자, 진법수)를 쓰면된다