728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 입력받은 진법의 수를 10진수로 변환하는 문제이다.
0부터 Z까지 총 36진법까지 존재하므로 해당 수를 리스트로 저장한다.
이는 입력받은 수를 정수로 표현한 값을 인덱스로 찾기 위함이다. 0 = 0, 1 = 1 ~ A = 10, B = 11
어떤 수를 10진수로 변환하려면 1의 자릿수부터 끝까지 반복하며 해당 진법의 0 제곱부터 자릿수 - 1 제곱까지 곱한 결과를 더해주면 된다.
ex) 1101 2진수 -> 1 * 2**3 + 1 * 2**2 + 0 * 2**1 + 1 * 2**0 = 13
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 최대 36진법까지 존재하므로 각 진법별 숫자와 문자를 리스트에 저장한다. 우선 숫자 리스트부터 생성한다. 숫자는 정수형이 아닌 문자형으로 저장한다. num = list(str(i) for i in range(10))
- 문자는 A부터 Z까지 존재하므로 아스키코드로 해당 문자를 저장한다. alpha = list(chr(i) for i in range(65, 91))
- 만든 두 리스트를 하나의 리스트로 합쳐준다. li = num + alpha
- 수와 진법을 입력받는다. N, B = map(str, sys.stdin.readline().split())
- 모두 문자형으로 입력받았으므로 수는 각 문자를 분리해 리스트로 바꾸고 N = list(N)
- 진법은 정수형으로 바꾼다. B = int(B)
- 10진수로 바꾼 결과를 저장할 변수를 생성하고 초기화한다. result = 0
- 리스트로 저장한 수의 뒤쪽부터 불러와 for i in range(1, len(N) + 1)
- 해당 문자의 인덱스 값과 해당 진법을 통해 10진수로 바꾼 결과를 더한다. result += li.index(str(N[-i])) * (B ** (i - 1))
- 최종 변환한 10진수를 출력한다. print(result)
반응형
3. 소스코드
import sys
num = list(str(i) for i in range(10))
alpha = list(chr(i) for i in range(65, 91))
li = num + alpha
N, B = map(str, sys.stdin.readline().split())
N = list(N)
B = int(B)
result = 0
for i in range(1, len(N) + 1):
result += li.index(str(N[-i])) * (B ** (i - 1))
print(result)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 5086번 : 배수와 약수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.19 |
---|---|
[백준] 2903번 : 중앙 이동 알고리즘 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.17 |
[백준] 2720번 : 세탁소 사장 동혁 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.16 |
[백준] 11005번 : 진법 변환 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.14 |
[백준] 2563번 : 색종이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.10 |
[백준] 10798번 : 세로읽기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.08 |
[백준] 2566번 : 최댓값 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.06 |
[백준] 25206번 : 너의 평점은 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.04 |