문제
https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
소스코드
import math
n, b = map(str, input().split(' '))
b = int(b)
D = {}
for i in range(10):
D[i] = str(i)
for i in range(26):
D[i+10] = chr(65+i)
d = {v: k for k, v in D.items()}
li = []
for i in range(len(n)):
li.append(d.get(n[i]) * math.pow(b, (len(n)-1-i)))
print(int(sum(li)))
풀이
B진법 수 N을 10진법 수로 바꾸는 문제였다.
1. 1~9, A~Z까지 해당하는 10진수 수들을 딕셔너리로 만듦. (이 과정에서 value와 key의 위치를 바꾸는 식을 사용했습니다.)
2. B진법이기에 'X진법-> 10진법'하는데에 사용되는 수학 식을 그대로 pow함수를 이용하여 구현.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 13410 거꾸로 구구단 (0) | 2023.01.29 |
---|---|
[백준/python] 3029 경고 (0) | 2023.01.29 |
[백준/python] 11652 카드 (0) | 2023.01.29 |
[백준/python] 1874번 스택 수열 (0) | 2023.01.29 |
[백준 / C++] 1316번: 그룹 단어 체커 (0) | 2023.01.28 |