728x90
반응형
문제
https://www.acmicpc.net/problem/2745
해설
이 문제는 파이썬에서 제공하는 int함수를 사용하면 쉽게 풀 수 있지만
그래도 진수 변환 방법만 알면 간단한 알고리즘으로 풀 수 있어서 작성해보았다.
2진수를 10진수로 변경해보았다.
위 방법처럼 계산만 해주면 된다.
우선 받은 문자를 역순으로 뒤집어 주면 편하다.
알파벳인지 숫자인지 구분한 다음,
알파벳이라면 실제 아스키 코드 값에선 A가 65이지만 문제에선 10으로 하기로 했으니 55를 빼주면 된다.
그리고 해당 값을 b의 인덱스 제곱만큼 곱해주면 된다.
숫자라면, 변환 없이 그 값을 b의 인덱스 제곱만큼 곱해주면 된다.
코드
-파이썬
#백준 2745(진법 변환)
n, b = input().split()
n = n[::-1]
res = 0
for i in range(len(n)):
if n[i].isalpha():
ascii_i = ord(n[i]) - 55 #알파벳 -> 숫자
res += ascii_i * (int(b) ** i)
else:
res += int(n[i]) * (int(b) ** i)
print(res)
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬] BOJ_17608(막대기) (0) | 2022.11.07 |
---|---|
[파이썬] BOJ_1212(8진수 2진수) (0) | 2022.08.13 |
[파이썬] BOJ_10866(덱) (0) | 2022.06.10 |
[파이썬] BOJ_10828(스택) (0) | 2022.05.24 |
[파이썬] BOJ_11004(K번째 수) (0) | 2022.05.18 |