Notice
Recent Posts
Recent Comments
Link
김재호
[백준] 진법변환2 (11005) 본문

문제
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
60466175 36
예제 출력 1
ZZZZZ

- N : 변환할 10진수 정수
- B : 변환할 진법(2~36 범위에서 사용)
- arr : 나머지 값(0~35)을 문자로 바꾸기 위한 테이블 문자열
- arr[0] = '0', arr[10] = 'A', arr[35] = 'Z' 처럼 매핑됨
- s : 변환 과정에서 만들어지는 진법 결과를 누적할 문자열(단, 뒤집힌 순서로 쌓임)
while N: 반복문을 통해 N이 0이 될 때까지 계속 진법 변환을 수행한다.
- N % B를 계산하여, 현재 자리의 값을 구한다.
- 진법 변환에서 “나머지”는 항상 가장 낮은 자리(1의 자리부터) 를 의미한다.
- arr[N % B]를 이용해 나머지 값을 문자로 변환한 뒤 s에 붙인다.
- 이때 낮은 자리부터 붙기 때문에 결과가 거꾸로 쌓인다.
- N //= B를 수행하여 N을 B로 나눈 몫으로 갱신한다.
- 다음 자리 계산을 위해 N을 줄이는 과정이며, 반복하면 결국 N이 0이 되어 종료된다.
마지막으로 s[::-1]로 문자열을 뒤집어 올바른 자리 순서로 출력한다.
- 나머지부터 쌓았기 때문에 뒤집는 과정이 필요하다.
※ 2진수 / 8진수 / 16진수 변환 (내장 함수)
- bin(n) : 10진수 정수 n → 2진수 문자열 ('0b' 접두어 포함)
- oct(n) : 10진수 정수 n → 8진수 문자열 ('0o' 접두어 포함)
- hex(n) : 10진수 정수 n → 16진수 문자열 ('0x' 접두어 포함)
문자열 진법 → 10진수” 변환 (내장 함수)
- int(string, base) : base진법 문자열을 10진수 정수로 변환
- base는 2~36 지원
'코딩테스트' 카테고리의 다른 글
| 프로그래머스 SQL (0) | 2026.02.21 |
|---|---|
| 프로그래머스 SQL (0) | 2026.02.21 |
| [백준] 최댓값(python) (2) | 2025.07.24 |
| [백준] 25206번 너의 평점은(python) (1) | 2025.07.21 |
| [백준] 2908번 상수(python) (0) | 2025.06.28 |