알고리즘

[백준 브론즈2] 진법 변환.py

파뱁 2022. 3. 9. 23:30
728x90

<문제 설명>

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

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하면 되는 문제 이다.

 

입출력의 예는 다음과 같다.

예제 입력 1

ZZZZZ 36

예제 출력 1

60466175

 

<문제 풀이 아이디어>

진법의 수가 1234, B진법의 B가 3으로 주어졌다고 가정할때 이 수를 10진법으로 바꾸는 법은 

1*3^3+2*3^2+3*3^1+4*3^0 이다 이를 일반화해서 계산하도록 만들면 된다.

다만 알파벳 대문자는 A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 이런식으로 수를 나타내기 때문에 이를 반영하여 풀이를 진행할 것이다.

 

<문제 풀이 코드>

import sys

line = sys.stdin.readline().split()
target = line[0]
b = int(line[1])

answer = 0

for i in range(len(target)):
    if target[i].isdecimal()==False:
        answer += (ord(target[i])-55)*b**(len(target)-1-i)
    else:
        answer += int(target[i])*b**(len(target)-1-i)
print(answer)

채점 결과

728x90
반응형