◆ 먼저, 글을 보기 전에 이 문제를 풀어볼까요?
더보기
문제
base 진법으로 표기된 숫자를 10진법 숫자 출력해보세요.
입력
입력으로는 공백으로 구분된 숫자가 두 개 주어집니다.
첫 번째 숫자는 num을 나타내며, 두 번째 숫자는 base를 나타냅니다.
출력
base 진법으로 표기된 num을 10진법 숫자로 출력해보세요.제한 조건
- base는 10 이하인 자연수입니다.
- num은 3000 이하인 자연수입니다.
입출력 예시
input output12 3 | 5 |
444 5 | 124 |
입출력 예 설명
입출력 예 1
3진법으로 표기된 12는 10진법으로 표현하면 5입니다. ( 1*3 + 2 )
입출력 예 2
5진법으로 표기된 444는 10진법으로 표현하면 124입니다. ( 4*5*5 + 4*5 + 4 )
저는 처음에 이 문제를 당연히 이렇게 풀었습니다.
num, base = map(int, input().strip().split(' '))
answer = 0
for idx,s in enumerate(str(num)[::-1]):
answer += (base ** idx) * int(s)
print(answer)
보통 사람들도 이렇게 for문을 이용해서 숫자를 곱해가며 문제를 풀 거에요.
그런데, 파이썬에서는 base 진법으로 나타난 스트링 숫자를 10진법으로 바꿔주는 기능이 있는데요!
진법 변환 문제는 알고리즘 문제나 코테 문제를 푸는 과정에서 필요한 과정일 수 있으니까 알아가세요!
파이썬의 int(x, base=10) 함수는 진법 변환을 지원합니다.
이 기본적인 함수를 잘 쓰면 코드도 짧게 쓸 수 있고, 시간절약도 가능하겠죠!?
(ex) 11진법으로 적힌 문자열 '3A12'를 10진법으로 바꾸기
num = '3A12'
base = 11
answer = int(num, base) # 5216
반응형
'컴퓨터 공부 > 🐍 Python' 카테고리의 다른 글
list(map(int, input().strip().split())) 와 [map(int, input().strip().split())] 의 차이 (2) | 2023.11.21 |
---|---|
[PYTHON] TYPEERROR: ‘UNICODE’ OBJECT DOES NOT SUPPORT ITEM ASSIGNMENT (0) | 2023.11.14 |
몫과 나머지 - divmod (0) | 2023.02.23 |
2차원 배열에서 최댓값 찾기 (0) | 2021.09.07 |
파이썬 기본_1 (0) | 2021.07.19 |