[백준] 11005번 진법 변환 2 - Python / 알고리즘 기초 1/2 - 수학 1 (참고)

ByungJik_Oh·2025년 3월 26일
0

[Baekjoon Online Judge]

목록 보기
37/244
post-thumbnail



💡 문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

출력

첫째 줄에 10진법 수 N을 B진법으로 출력한다.


💭 접근

진법 변환의 원리를 이해하고 적용하는 문제이다.

ex)
만약 10진수 '7'을 2진수로 변환한다면,
7=2×7 = 2 \times 33 +1+ 1 (20^0 자리)
33 =2×= 2 \times 11 +1+ 1 (21^1 자리)
11 =2×0+1= 2 \times0+ 1 (22^2 자리)
이므로 7 -> 111이 된다.

이처럼 10진수를 n진수로 변환할 때 몫과 나머지를 이용하는데, 나머지가 10 이상 (두 자리) 일때는 알파벳을 사용하여 나타내므로 0~Z까지 문자열을 생성한 뒤, 나머지로 인덱싱하여 출력을 구한다.


📒 코드

alph = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

n, b = map(int, input().split())

ans = ''
while n != 0:
    ans += alph[n % b]
    n //= b

print(ans[::-1])

💭 후기

진법 변환 원리를 알고 있으면 쉽게 풀릴 문제이다.


🔗 문제 출처

https://www.acmicpc.net/problem/11005


profile
精進 "정성을 기울여 노력하고 매진한다"

0개의 댓글