티스토리 뷰

📌문제

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)

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함