BOJ 2745 진법 변환

LONGNEW·2021년 1월 31일
0

BOJ

목록 보기
131/333

https://www.acmicpc.net/problem/2745
시간 1초, 메모리 128MB
input :

  • N B(2 ≤ B ≤ 36)

output :

  • B진법 수 N을 10진법으로 출력

조건 :

  • A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

알파벳이 들어온 경우엔 ord(item) - 55 를 실행하자.

진법의 변환의 경우
2진수 일 때
2^3 2^2 2^1 2^0
8진수 일 때
8^3 8^2 8^1 8^0

B 즉 몇 진법인지에 따라 제곱을 하는 형식으로 커지게 된다.

그렇다면 ZZZZZ를 받았을 때.
36^4 36^3 36^2 36^1 36^0
으로 가게 되니까 숫자에다가 저걸 곱해주면 되는 것.

import sys

n, b = sys.stdin.readline().split()
b = int(b)
res = 0

for idx, item in enumerate(n):
    try:
        if int(item):
            res += int(item) * b ** (len(n) - 1 - idx)
    except:
        res += (ord(item) - 55) * b ** (len(n) - 1 - idx)
print(res)

0개의 댓글