반응형
문제 설명
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진법으로 출력한다.
예제 입력, 예제 출력
ZZZZZ 36 | 60466175 |
코드 및 설명
n, b = input().split(" ")
answer = 0
count = 0
for i in range(len(n)-1, -1, -1):
if n[i].isalpha():
sys_n = int(ord(f'{n[i]}') - 55)
else:
sys_n = int(n[i])
answer += (sys_n * (int(b)**count))
count += 1
print(answer)
이 문제는 B진법 수 N을 10진법으로 표현하면 되는 것인데
예제로 풀이를 해보면
ZZZZZ = 3535353535
인데 여기서 35 * (36**4) + 35 * (36**3) + 35 * (36**2) + 35 * (36**1) + 35 * (36**0)의 합을 구하는 것이다.
위에 코드에서 for은 n의 값을 뒤에서부터 차례로 불러오고, count값으로 +1을 해주면서 제곱근을 구할 수 있도록 해주면
답을 구할 수 있다.
반응형
'삽집하는 개발들 > 알고리즘' 카테고리의 다른 글
[115일차] 햄버거 만들기 - 백준 - 25628(python - 수학, 사칙연산) (24) | 2024.02.17 |
---|---|
[114일차] 상수 - 백준 - 2908(python - 수학, 구현) (66) | 2024.01.28 |
[112일차] 팰린드롬인지 확인하기 - 백준 - 10988(python - 문자열, 구현) (60) | 2024.01.26 |
[111일차] 진법 변환 2 - 백준 - 11005(python - 수학, 구현) (54) | 2024.01.21 |
[110일차] -2진수 - 백준 - 2089(python - 수학, 정수론) (60) | 2024.01.19 |