백준 2745번 : 진법변환

2023. 10. 16. 14:06[알고리즘]/문제 풀이

문제

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

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

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

출력

첫째 줄에 B진법 수 N을 10진법으로 출력한다.

예제 입력 1 복사

ZZZZZ 36

예제 출력 1 복사

60466175

 

풀이

 

내가 푼 방법

N, B = input().split()
print(int(N, int(B)))

- 파이썬에서 int로 10진수 변환이 가능한 점을 이용했다.

 

 

다른 방법

- 2진법 to 10진법으로 변환하는 방법

2진법 수가 1010일 때 각 자릿수에 2^3, 2^2, 2^1, 2^0을 곱하면 10진수가 나온다.

마찬가지로 N진법 수 00이 있다고 하면 N^자릿수로 구할 수 있다.

 

N, B = input().split()
ary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

N = N[::-1]
result = 0

for i,n in enumerate(N):
    result += (int(B)**i)*(ary.index(n))
print(result)

 

반응형