https://www.acmicpc.net/problem/2745
[ 문제 ]
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
① nums 라는 변수에 0~9 와 A~Z 값을 저장한다.
nums = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
이러면 본인의 값은 인덱스 번호와 동일하기 때문에 답을 도출하는데 수월할 것이다.
② 입력
n, b = input().split()
b = int(b)
N = len(n)
sum = 0
③ 진법 계산
바로 머릿속에 구현이 되지 않아 노트에 적어가며 이해해보았다. 로 했던데
다른 사람들은 애초에 문자열을 뒤집어서 bi 로 계산했었다.
성능 차이는 없을테니 나는 내 방식대로~
for i in range(N):
sum += b**(N-1-i) * nums.index(n[i])
print(sum)
'🧩 Programming Languages > Python CodingTest' 카테고리의 다른 글
백준 2023번(gold 5) : 신기한 소수 - DFS (0) | 2024.08.20 |
---|---|
백준 2750번(bronze 2) : 수 정렬하기 (2차) (0) | 2024.08.17 |
백준 1157번(bronze 1) : 단어 공부 (0) | 2024.08.12 |
백준 9012번(silver 4) : 괄호 (replace) (0) | 2024.02.04 |
백준 17103번(silver 2) : 골드바흐 파티션 (소수의 합으로 이루어진 수) (0) | 2024.02.03 |