728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 10진법 수를 원하는 진법의 수로 바꾸는 문제이다.
우선 각 진법별 수를 0~9까지, A~Z까지 한 리스트에 저장한다.
10진법 수를 원하는 진법의 수로 나눈 나머지의 값을 인덱스 값으로 갖는 해당 문자를 저장하며 진법을 바꾼다.
이때 바꾼 결과는 거꾸로 저장되어 있기 때문에 최종 결과를 뒤집어 준다.
나머지를 추가한 뒤에는 해당 수를 진법 수로 나눈 몫의 결과로 새로 저장하며 0이 될 때까지 반복한다.
ex) 8을 2진법으로 바꾸면 8 % 2 = 0, 4 % 2 = 0, 2 % 2 = 0, 1 % 2 = 1로 리스트에는 0001로 저장된다. 이를 뒤집어 줘야 한다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 0~9, A~Z까지의 리스트를 각각 만들어 하나의 리스트로 합친다. 이때 숫자도 모두 문자형으로 저장하여 나중에 결과를 출력하기 용이하게 만든다. li = list(str(i) for i in range(10)) + list(chr(i) for i in range(65, 91))
- 10진법 수와 바꿀 진법을 입력받는다. N, B = map(int, sys.stdin.readline().split())
- 바꾼 진법의 결과를 저장할 리스트를 생성하고 result = list()
- 10진법 수가 0이 될 때까지 반복하며 while (N != 0)
- 해당 수를 바꿀 진법으로 나눈 나머지에 해당하는 값을 추가한다. result.append(li[N % B])
- 해당 수를 진법으로 나눈 몫의 결과로 새로 저장한다. N //= B
- 바꿀 진법의 결과를 구했다면 이는 거꾸로 저장되어 있기에 뒤집어 준다. result.reverse()
- 해당 결과를 하나의 문자열로 만들어 출력한다. print(''.join(result))
반응형
3. 소스코드
import sys
li = list(str(i) for i in range(10)) + list(chr(i) for i in range(65, 91))
N, B = map(int, sys.stdin.readline().split())
result = list()
while (N != 0):
result.append(li[N % B])
N //= B
result.reverse()
print(''.join(result))
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2501번 : 약수 구하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.21 |
---|---|
[백준] 5086번 : 배수와 약수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.19 |
[백준] 2903번 : 중앙 이동 알고리즘 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.17 |
[백준] 2720번 : 세탁소 사장 동혁 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.16 |
[백준] 2745번 : 진법 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.12 |
[백준] 2563번 : 색종이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.10 |
[백준] 10798번 : 세로읽기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.08 |
[백준] 2566번 : 최댓값 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.06 |