[Bronze I] 진법 변환 2 - 11005
성능 요약
메모리: 34760 KB, 시간: 124 ms
분류
구현, 수학
제출 일자
2023년 10월 16일 17:42:41
문제 설명
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
코드
import string
tmp = string.digits + string.ascii_uppercase
n, b = map(int, input().split())
def convert(num, base):
q, r = divmod(num, base)
if q == 0:
return tmp[r]
else:
return convert(q, base) + tmp[r]
print(convert(n, b))
string모듈을 가져와 숫자와 영어 대문자를 불러온다.
divmod 내장함수로 몫과 나머지를 q와 r에 넣어주고 일의 자리 숫자이면 그대로 값을 넣어주고 아니면 재귀함수로 q와 진수를 넣어 계속 진행
이전의 진법 변환 문제는 그냥 int함수를 이용해 int(num, base)를 하면 10진수로 변환할 수 있었는데 10진수에서 2, 8, 16진수 이외에 n진수로 변환하려면 직접 구현해줘야 한다.
'코딩테스트 > Algorithm' 카테고리의 다른 글
[백준 10813] 공 바꾸기 (0) | 2023.12.14 |
---|---|
[백준 10810] 공 넣기 (0) | 2023.12.14 |
[백준 25206] 너의 평점은 (0) | 2023.10.15 |
[백준 10988] 팰린드롬인지 확인하기 (0) | 2023.06.26 |
[백준 2563] 색종이 (0) | 2023.06.26 |