728x90
문제 출처: https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
문제
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
정답
b, n = input().split()
n = int(n)
tmp = 0
answer = 0
for i in b[::-1]:
if i.isnumeric():
num = int(i)
else:
num = ord(i)-55
if tmp == 0:
answer += (num)
else:
answer += (num)*(n**tmp)
tmp +=1
print(answer)
1. b, n 입력 후 n을 정수형으로 입력 및 tmp, answer 0으로 세팅
2. for문을 통해 뒤부터 가져와서 if문에서 정수일 경우 정수로 입력, 문자일 경우 아스키코드로 변환후 -55를 하여 입력
3. 밑에 if문에서 tmp가 0일 경우 그냥 num을 더해주고 else일 경우 num*(n**tmp)의 값을 더해줍니다.(진법에 대한 지식이 있으면 바로 알아 들으실 것 같습니다)
4. for문 마다 tmp +=1
5. answer 출력
728x90
'코딩 > 백준' 카테고리의 다른 글
[백준/파이썬/수학] 5596번 대표값2 코딩테스트 연습풀이 브론즈2 (0) | 2022.04.22 |
---|---|
[백준/파이썬/수학] 5596번 시험 점수 코딩테스트 연습풀이 브론즈4 (0) | 2022.04.21 |
[백준/파이썬/수학] 15894번 수학은 체육과목 입니다 코딩테스트 연습풀이 브론즈5 (0) | 2022.04.19 |
[백준/파이썬/수학] 2749번 피보나치 수 3 코딩테스트 연습풀이 골드2 (0) | 2022.04.18 |
[백준/파이썬/수학] 5063번 TGN 코딩테스트 연습풀이 브론즈3 (0) | 2022.04.17 |