카테고리 없음
[백준] 2745 '진법 변환' 파이썬(python)
나는SOU
2021. 11. 11. 01:30
https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
B_jinbub = { '0':0, '1':1, '2':2, '3':3, '4':4, '5':5,
'6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11,
'C':12, 'D':13, 'E':14, 'F':15, 'G':16, 'H':17, 'I':18,
'J':19, 'K':20, 'L':21, 'M':22, 'N':23, 'O':24, 'P':25,
'Q':26, 'R':27, 'S':28, 'T':29, 'U':30, 'V':31, 'W':32,
'X':33, 'Y':34, 'Z':35}
# B진법 표현
inputBjinbub, B = input().split()
B = int(B) # 문자가 아니기에 숫자로 따로 변환
res = 0
for i, b in enumerate(inputBjinbub[::-1]) : # enumerate로 인덱스를 추가한다. 그래서 i는 인덱스 b는 해당 B진법 값이 된다
res = res + B_jinbub[b] * (B**i) # 십진법으로 변환하는 단계. B진법 안에서 십진법 값을 찾고, 자리를 찾기 위해 B**i를 해준다
print(res)
Point
- enumerate 함수는 리스트에 있는 값들에 인덱스를 추가해준다. 따라서 for 문에 인자를 두 개로 받아서 인덱스 값도 따로 활용할 수가 있다.