[진법 변환2]-11005번
My answer
import sys
import string
tmp=list(map(int,sys.stdin.readline().split()))
upper=[j for j in string.ascii_uppercase]
table,result=dict(),""
for i in range(10,36):
table[i]=upper[i-10]
while(tmp[0]!=0):
a=tmp[0]%tmp[1]
tmp[0]=tmp[0]//tmp[1]
if(a>=10):
result+=table[a]
else:
result+=str(a)
print(result[::-1])
Another answer
N,B=map(int, input().split())
r=''
while N!=0:
N,m=N//B,N%B
if m>9: r=chr(m+55)+r
else: r=str(m)+r
print(r)
-------------------------------------
n,b=map(int,input().split())
r=''
while n:
r=chr(n%b+48+(n%b>9)*7)+r
n//=b
print(r)
더보기
우선 내 코드는 알파벳 리스트를 만들어서 10진법이상이 들어올 때를 대비해서 10~36까지의 알파벳을 숫자와 딕셔너리형태로 만들어놓고 진법 변환을 했다. 아래 코드중 첫번째는 아스키코드를 이용해서 딕셔너리를 만들지 않고 하여 훨씬 시간이 빠르다. 맨 마지막 코드는 아직 이해하지 못해서 나중에 설명하겠다 ㅠㅠ
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python/백준] #11576- [Base Conversion] (0) | 2021.12.07 |
---|---|
[Python/백준] #2089- [-2진수] (0) | 2021.12.06 |
[Python/백준] #9613- [GCD 합] (0) | 2021.12.04 |
[Python/백준] #1850- [최대공약수] (0) | 2021.12.04 |
[Python/백준] #1934- [최소공배수] (0) | 2021.12.04 |