진법 변환
by Cori문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
· 입출력 예
num | bin | return |
ZZZZZ | 36 | 60466175 |
풀이
1. Me
def get_num(num: str) -> int:
if num.isnumeric():
return int(num)
elif 'A' <= num and num <= 'Z':
return (ord(num) - 55)
def solution(num: str, b: str) -> int:
sum = 0
for i, d in enumerate(num):
val = get_num(d)
sum += val * (int(b) ** (len(num) - i - 1))
print(sum)
num, b = input().split()
solution(num, b)
10진수가 넘어가는 경우에는 문자열로 수를 표현하기 때문에, ord() 연산을 이용해서 'A' ~ 'Z'까지의 문자를 ASCII 코드로 바꾸고, 'A': 65 -> 10으로 표현하기 위해 55를 빼주었다. 이후 진법 계산법에 따라 값을 계산하면 완료 !
* elif 조건문으로 num이 'A' ~ 'Z' 사이에 있는지 검사하지 않으면 문제 통과를 못함
'CS > Coding Test' 카테고리의 다른 글
DFS와 BFS (0) | 2021.09.27 |
---|---|
유효한 팰린드롬 (0) | 2021.09.27 |
팩토리얼 진법 (0) | 2021.09.25 |
이상한 문자 만들기 (0) | 2021.09.09 |
제일 작은 수 제거하기 (0) | 2021.09.08 |
블로그의 정보
코딩하는 오리
Cori