문제 링크
https://www.acmicpc.net/problem/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진법으로 출력한다.
예제
입력
60466175 36
출력
ZZZZZ
정답 및 풀이
n,b = map(int,input().split())
result=[]
while n>0:
remainder = n%b
if remainder >=10:
result.append(chr(ord('A')+remainder-10))
else :
result.append(str(remainder))
n //= b
print(''.join(reversed(result)))
- n, b = map(int, input().split())
- 입력을 공백 기준으로 잘라 두 개의 정수를 받음
- while n > 0:
- n 이 0이 될 때까지 반복
- remainder = n%b
- 나머지가 현재 자리수의 값이 됨
- if remainder >=10:
- 나머지가 10 이상일 때, A,B.. 로 바꿔야 함
- result.append(chr(ord('A')+remainder-10))
- 10 이면 A, …35면 Z
- chr() 로 다시 문자로 변환 후 리스트에 추가
- else :result.append(str(remainder))
- 나머지가 0~9 라면 그냥 문자열 숫자로 변환해서 리스트에 추가
- n //= b
- n 을 b 로 나눈 몫으로 갱신
- print(''.join(reversed(result)))
- 리스트는 뒤에서부터 쌓인 값이므로 순서를 뒤집음
- join 을 사용해 리스트를 하나의 문자열로 합쳐서 출력
새롭게 배운 내용 및 느낀점
- reversed()
- 리스트, 문자열, 튜플 를 거꾸로 순회할 수 있게 해줌
- “”.join()
- 리스트,문자열의 요소들을 하나의 문자열로 합쳐
'백준' 카테고리의 다른 글
| [백준] 2903 : 중앙 이동 알고리즘 (Python/파이썬) (0) | 2025.10.12 |
|---|---|
| [백준] 2720 : 세탁소 사장 동혁 (Python/파이썬) (0) | 2025.10.10 |
| [백준] 2745 : 진법 변환 (Python/파이썬) (0) | 2025.10.04 |
| [백준] 2563 : 색종이 (Python/파이썬) (0) | 2025.10.04 |
| [백준] 10798 : 세로 읽기 (Python/파이썬) (0) | 2025.10.04 |