티스토리 뷰
📌문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
📌풀이
1. reversed() 함수를 사용해서 입력받은 문자열 n을 뒤집음(진법 계산 시 자릿수를 편리하게 처리하기 위해서)
2. for문에서 숫자의 자릿수를 역순으로 탐색
3. nums에서 해당하는 문자를 찾아 인덱스를 가져옴
4. 진법 계산을 위해 b의 i제곱 수행
예시) 36진법 ZZZZZ를 10진수로 표현한다면
35(Z)*36⁴ + 35*36³ + 35*36² + 35*36¹ + 35*36⁰
📌코드
n, b = input().split()
n = "".join(reversed(n))
b = int(b)
nums = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = 0
for i in range(len(n) - 1, -1, -1):
result += (nums.index(n[i])) * (int(b) ** i)
print(result)
'코딩테스트' 카테고리의 다른 글
백준 2563 색종이/파이썬 (0) | 2025.01.08 |
---|---|
백준 10798 세로읽기/파이썬 (0) | 2025.01.07 |
백준 2738 행렬 덧셈/파이썬 (0) | 2025.01.06 |
백준 1316 그룹 단어 체커/파이썬 (0) | 2025.01.05 |
백준 10988 팰린드롬인지 확인하기/파이썬 (1) | 2025.01.03 |