#문제링크
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(바꿀숫자, 진법수)를 쓰면된다
'코딩테스트' 카테고리의 다른 글
[프로그래머스/LEVEL 1/파이썬] 다트게임 (0) | 2022.06.19 |
---|---|
[백준/파이썬] 11005 진법 변환2 (0) | 2022.06.17 |
[백준/파이썬] 16506 CPU (0) | 2022.06.16 |
[백준/파이썬] 3568 iSharp (0) | 2022.06.16 |
[백준/파이썬] 1541 잃어버린 괄호 (0) | 2022.06.15 |