Baekjoon/단계별로 풀어보기

[백준][8단계 일반 수학 1] 2745번 /진법 변환 (파이썬/Python)

junslee 2025. 3. 28. 10:56

1. 문제 설명

2. 풀이 과정

B진법 수 N이 입력되므로

N, B에 input().split()로 입력받는다.

B는 정수이므로 int(B)으로 정수변환한다.

alpha에 'A'부터'Z'까지의 아스키 코드 값을 10부터 저장할 딕셔너리를 만든다.

십진수값 decimal과 몇 제곱하는지를 표현할 power를 0으로 초기화한다.

역순으로 문자를 순회하기 위해 reversed(N)으로 하고

문자가 isdigit()으로 숫자이면 decimal에 int(char)값에 B**power을 곱해 더한다.

숫자가 아니면 문자이므로 alpha[char]값에 B**power을 곱해 더한다.

power은 1씩 더해주면서 반복문을 진행한다.

for문을 빠져나오면 decimal을 출력한다.

3. 코드

N, B = input().split()
B = int(B)
alpha = {chr(i): i - ord('A') + 10 for i in range(ord('A'), ord('Z') + 1)}
decimal = 0
power = 0
for char in reversed(N):
    if char.isdigit():
        decimal += int(char) * (B ** power)
    else:
        decimal += alpha[char] * (B ** power)
    power += 1
print(decimal)

4. 다른 코드

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

print(int(N, B))
  • int()가 내장함수라 바로 10진법으로 계산해주는 기능이 있다고 한다.