06. Python(진법 변환)
06. Python(진법 변환)
[toc]
진법 변환
문제
https://www.acmicpc.net/problem/2745
제출
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from string import ascii_uppercase
a, b = map(str, input().split())
A_list = list(a)
A_list.reverse()
alp_dic = {}
for i in ascii_uppercase:
alp_dic[i] = ord(i) - 55
rst = 0
for i in range(len(A_list)):
if A_list[i] in alp_dic:
rst += alp_dic[A_list[i]] * (int(b) ** i)
else:
rst += int(A_list[i]) * (int(b) ** i)
print(rst)
1
2
ZZZZZ 36
60466175
인사이트
1
2
a, b = map(str, input().split())
print(int(a, int(b)))
1
2
ZZZZZ 36
60466175
- int(x, base)의 개념을 잊고 있었음
- base는 x값이 몇 진수인지 정의하는 인자이며, 0 그리고 2부터 36까지의 값을 가짐
- base가 정의되었다면 x는 반드시 n진수로 표현 가능한 string, bytes, bytearray값으로 정의해야 함
- base가 정의되었다면 x를 숫자 형으로 정의할 수 없음
- base의 기본값은 10이고 사용할 때는 대부분 생략(흔히 아는 int(a)의 형태)
- Int(‘10’) => 10으로 나오는 이유는 base가 0 일 때 문자열을 그대로 정수로 변환하기 때문
- 실제로 int(‘10’, 0)