백준 2745번 : 진법변환
2023. 10. 16. 14:06ㆍ[알고리즘]/문제 풀이
문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
예제 입력 1 복사
ZZZZZ 36
예제 출력 1 복사
60466175
풀이
내가 푼 방법
N, B = input().split()
print(int(N, int(B)))
- 파이썬에서 int로 10진수 변환이 가능한 점을 이용했다.
다른 방법
- 2진법 to 10진법으로 변환하는 방법
2진법 수가 1010일 때 각 자릿수에 2^3, 2^2, 2^1, 2^0을 곱하면 10진수가 나온다.
마찬가지로 N진법 수 00이 있다고 하면 N^자릿수로 구할 수 있다.
N, B = input().split()
ary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
N = N[::-1]
result = 0
for i,n in enumerate(N):
result += (int(B)**i)*(ary.index(n))
print(result)
반응형
'[알고리즘] > 문제 풀이' 카테고리의 다른 글
백준 14425번 : 문자열 집합 (0) | 2023.10.16 |
---|---|
백준 14215번 : 세 막대 (1) | 2023.10.16 |
백준 15894번 : 수학은 체육과목 입니다. (0) | 2023.10.16 |
백준 10101번 : 삼각형 외우기 (0) | 2023.10.16 |
백준 11478번 : 서로 다른 부분 문자열의 개수 (0) | 2023.10.13 |