[BOJ / Python] 2745 진법 변환

도니·2023년 4월 7일
0

BOJ / Python

목록 보기
47/104
post-thumbnail

문제

백준 2745 진법 변환

코드

Solution 1: 일반 풀이

#BOJ 2745 진법 변환

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

decimal_num = 0
for i in range(len(N)):
    if 65 <= ord(N[i]) and ord(N[i]) <= 90:
        N[i] = ord(N[i]) - 55
        decimal_num += int(N[i])*(int(B)**i)
    else:
        decimal_num += int(N[i])*(int(B)**i)
print(decimal_num)

코드 설명
우선 N을 리스트로 만들고, 일의 자리 숫자부터 계산하기 위해 리스트를 뒤집어준다.
리스트에 들어있는 것이 아스키코드로 65~90, 즉 알파벳 대문자인 경우 55만큼 빼서 A=10, B=11, ... , Z=35로 계산될 수 있도록 한다.
계산은 일반적인 10진법 변환 계산과정과 같다.

해당 코드로 풀어도 맞기는 하지만.. 실행시간이 매우 오래 걸린다.

Solution 2: 쉽고 간단한 풀이

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

int(변환할 숫자, n진법)
파이썬의 경우 int()를 활용하여 간단하게 n진법을 10진법으로 변환 가능

profile
안녕하세요, 🌱새싹개발자 도니💡입니다!

0개의 댓글

관련 채용 정보