기초 프로그래밍/Python

[백준] 2745번 파이썬 python(진법 변환)

Chaerry._o 2023. 9. 15. 15:37
반응형

▷ 문제

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

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

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

 

전체 코드

N, B = input().split()
N = N[::-1]
B = int(B)

a = list("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
b = 0

for i,n in enumerate(N):
    b += (B**i)*(a.index(n))

print(b)

 

코드 분석

N, B = input().split()
N = N[::-1]
B = int(B)

변수 N에 변환할 수를 저장한다. 변수 B에 진법을 저장한다.

input() 함수를 사용해 입력된 요소를 문자열로 변수에 저장한다. split() 함수를 사용해 공백을 기준으로 나눠준다.

 

변수 N에 저장된 문자열을 [::-1]을 사용해 뒤집어준다.변수 B에 저장된 문자열을 int() 함수를 사용해 정수형으로 변환한다.

 

 

a = list("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
b = 0

리스트 a에 list() 함수를 사용해 괄호 안에 요소를 저장한다.

변수 b에 0을 저장한다.

 

for i,n in enumerate(N):
    b += (B**i)*(a.index(n))

for 문을 사용해 변수 i와 n에 enumerate() 함수를 사용해 변수 N에 저장된 요소의 인덱스와 그 인덱스에 있는 문자를 넣어준다.

변수 b에 B진법을 10진법으로 바꾸는 공식을 사용해 10진법으로 바꾼 값을 저장한다.

 

print(b)

print() 함수를 사용해 B진법에서 10진법으로 변환된 값을 출력한다.

반응형