본문 바로가기

코딩테스트/백준

[백준] 2745번 : 진법 변환 (Python)

문제 : https://www.acmicpc.net/problem/2745

 

B진법 수 N을 10진법으로 변환하는 문제.

import sys

input = sys.stdin.readline

# 진법 변환기
def radix(N, B):
    
    match_ = { '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 }
    
    num = 0
    loc = 0
    
    for i in N[::-1]:
        
        num += (B**loc) * match_[i] # N진법의 위치 * 그 위치의 값
        loc += 1
        
    return num

N, B = input().split() # B진법의 수 N, 진법의 수 B
print(radix(N, int(B)))
 

 

[문제풀이]


 

 

 

숫자 뒤에서부터 차례대로 N진법의 위치에 그 위치값을 곱하면 끝.