반응형
문제
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
예제 입력60466175 36 |
예제 출력ZZZZZ |
풀이
n을 b로 나눈 나머지가 각 자리에 표시할 수에 해당한다.
위 숫자가 10 이상일 경우 자리에 맞는 알파벳을 출력하고, 아닐 경우 그대로 출력하면 된다.
단, 역순으로 출력해야 하므로 스트링이나 배열에 담은 뒤 반대로 출력해야 한다.
나눈 나머지를 구한 뒤엔 실제로 나눈 몫을 n에 치환해주고, n이 0이 될때까지 반복한다.
n,b = map(int,input().split())
ans = ""
while n!=0:
a = n % b
if a >= 10:
ans += chr(a+55)
else:
ans += str(a)
n //= b
print(ans[::-1])
반응형
'알고리즘 연습 > 구현, 문자열' 카테고리의 다른 글
[🥈3 / 백준 1972 / 파이썬] 놀라운 문자열 (0) | 2021.10.30 |
---|---|
[🥈4 / 백준 1120 / 파이썬, 자바] 문자열 (0) | 2021.10.21 |
[🥉2 / 백준 10804 / 파이썬] 카드 역배치 (0) | 2021.10.16 |
[🥉2 / 백준 1672 / 파이썬] DNA 해독 (0) | 2021.10.16 |
[🥉1 / 백준 1357 / 파이썬] 뒤집힌 덧셈 (0) | 2021.10.14 |