728x90
반응형
BaekJoon 백준 11005 진법 변환 2 문제는 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 문제이다. 문제를 풀기 위해서는 진수끼리의 변환, 진법 변환 방법과 알고리즘을 알아야 한다. python의 string 클래스를 사용했다. 난이도는 Bronze 1이다.
BaekJoon 11005 진법 변환 2 문제 정보
출처
- https://www.acmicpc.net/problem/11005
난이도
- 브론즈 1 / Bronze 1
진법 변환 2 문제 요약
- 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력한다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
- 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
- A: 10, B: 11,..., F: 15,..., Y: 34, Z: 35
문제 풀이 과정
- N이 B보다 클 동안 2~3 과정을 반복한다.
- N을 B로 나눈 나머지를 리스트에 저장하고
- N에 N // B을 저장한다.
- 나머지 리스트를 reverse() 함수를 사용하여 역순으로 바꾼다.
- 나머지가 10 이상이면 python string 클래스를 이용하여 문제 조건의 알파벳으로 바꿔준다.
▶ string.ascii_uppercase 반환 값 : 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' - 리스트의 원소들을 map 함수를 사용하여 str 문자열로 바꿔 준 뒤, join 함수를 사용하여 한 줄로 출력한다.
코드 및 설명
- rst [] - N을 B로 나눈 나머지 값
import string
N, B = map(int, input().split())
rst = []
while N >= B:
rst.append(N % B)
N = N // B
rst.append(N)
rst.reverse()
for i in range(len(rst)):
if rst[i] >= 10:
rst[i] = string.ascii_uppercase[rst[i] - 10]
print(''.join(map(str, rst)))
백준 런타임 에러 (TypeError)가 발생했는데, join 함수를 리스트에 적용하는데, 리스트에서 알파벳이 아닌 원소는 정수여서 일어난 타입 에러였다.
정수에는 join() 함수를 못 쓰므로 리스트의 원소들을 모두 문자열 str으로 바꿔주는 map 함수를 적용한 다음에 join을 해주었더니 해결되었다.
BaekJoon 백준 11005 진법 변환 2 문제를 파이썬 python 진법 변환 알고리즘으로 풀어보았다. 난이도는 Bronze 브론즈 1이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 13301 타일 장식물 (Python / 파이썬) (0) | 2021.08.18 |
---|---|
[BaekJoon] 백준 9625 BABBA (Python / 파이썬) (0) | 2021.08.18 |
[BaekJoon] 백준 2851 슈퍼 마리오 (Python / 파이썬) (0) | 2021.08.18 |
[BaekJoon] 백준 1357 뒤집힌 덧셈 (Python / 파이썬) (0) | 2021.08.17 |
[BaekJoon] 백준 9093 단어 뒤집기 (Python / 파이썬) (0) | 2021.08.17 |
댓글