문제
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
내 제출
1.
import sys
N, B = map(int, sys.stdin.readline().split())
dic = {10: "A", 11: "B", 12: "C", 13: "D", 14: "E", 15: "F", 16: "G", 17: "H", 18: "I", 19: "J", 20: "K", 21: "L", 22: "M", 23: "N", 24: "O", 25: "P", 26: "Q", 27: "R", 28: "S", 29: "T", 30: "U", 31: "V", 32: "W", 33: "X", 34: "Y", 35: "Z"}
result = ''
while N:
result += str(dic[N % B])
N //= B
print(result[::-1])

2.
import sys
N, B = map(int, sys.stdin.readline().split())
result = ''
while N:
if(N % B > 9):
result += str(chr((N % B) + 55))
N //= B
else:
result += str(N % B)
N //= B
print(result[::-1])

다른 코드
N, B = map(int, input().split())
s = ''
arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
while N:
s += str(arr[N%B])
N //= B
print(s[::-1])
n, b = map(int, input().split())
s=""
while n:
s += chr(n%b + [48,55][n%b >9])
n //= b
print(s)
- chr(n % b + [48, 55][n % b > 9])
- n % b > 9가 참이면 True로 평가되어 1을 반환, 그렇지 않으면 False로 0을 반환
- n % b + 48은 0부터 9까지의 숫자를 ASCII 문자 '0'부터 '9'로 변환
- n % b + 55는 10부터 35까지의 숫자를 ASCII 문자 'A'부터 'Z'로 변환
'Programming > Python' 카테고리의 다른 글
| [Baekjoon/Python] 5717 상근이의 친구들 (0) | 2025.09.09 |
|---|---|
| [Baekjoon/Python] 2720 세탁소 사장 동혁 (0) | 2024.06.29 |
| [Baekjoon/Python] 2745 진법 변환 (0) | 2024.06.27 |
| [Baekjoon/Python] 2563 색종이 (0) | 2024.06.18 |
| [Baekjoon/Python] 2738 행렬 덧셈 (0) | 2024.06.11 |