컴퓨터 공부/🐍 Python

n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수

letzgorats 2023. 2. 23. 16:33

◆ 먼저, 글을 보기 전에 이 문제를 풀어볼까요?

 

더보기

문제

base 진법으로 표기된 숫자를 10진법 숫자 출력해보세요.

입력

입력으로는 공백으로 구분된 숫자가 두 개 주어집니다.

첫 번째 숫자는 num을 나타내며, 두 번째 숫자는 base를 나타냅니다.

출력

base 진법으로 표기된 num을 10진법 숫자로 출력해보세요.

 

제한 조건

  • base는 10 이하인 자연수입니다.
  • num은 3000 이하인 자연수입니다.

입출력 예시

input                                                                                                  output
12 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
반응형