Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[Python]프로그래머스 강의_파이썬을 파이썬 답게 파트2. 정수 다루기_n진법으로 표기된 string을 10진법 숫자로 변환하기(파이썬 진법변환, enumerate, int(x,base) ) 본문
공부/Python
[Python]프로그래머스 강의_파이썬을 파이썬 답게 파트2. 정수 다루기_n진법으로 표기된 string을 10진법 숫자로 변환하기(파이썬 진법변환, enumerate, int(x,base) )
도토리까꿍v 2021. 5. 5. 19:16
Contents
접기
#문제 링크
파이썬을 파이썬답게 - n진법으로 표기된 string을 10진법 숫자로 변환하기 | 프로그래머스 (programmers.co.kr)
#문제
문제 설명
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입니다. ( 455 + 4*5 + 4 )
#답안1
import math
num, base = map(int, input().strip().split(' '))
result=0
for i in range(len(str(num)),0,-1) :
n=num//math.pow(10,i-1)
result=result+(n*math.pow(base,i-1))
num=num%math.pow(10,i-1)
print(int(result))
▲enumerate사용법을 몰랐을 때는 이렇게 풀었다 ㅜㅜ
#답안2
num, base = map(int, input().strip().split(' '))
answer = 0
num=str(num)
for idx, number in enumerate(num[::-1]):
answer += int(number) * (base ** idx)
print(answer)
▲보통사람들은 답안2처럼 푼다고 한다..!! 나는 enumerate도 몰라서 이렇게 못풀었다.
▲이렇게 number의 각 자리수에 base**idx(base의 idx승)을 곱하여 answer에 더하는 식으로 구현한다.
#답안3
num, base = map(int, input().strip().split(' '))
answer = int(str(num), base)
print(answer)
▲강의에서는 답안3 으로의 해결방법을 제시하였다.
파이썬의 int(x,base)함수는 진법 변환을 지원한다.
이 기본적인 함수를 잘 쓰면 코드를 짧게 쓸 수 있고, 또 시간을 절약할 수 있다고 한다.
★★★암기
int(x,base) 는 base진법으로 표현된 x를 십진법으로 변환해주는 함수이다.
#강의 해설 링크
파이썬을 파이썬답게 - n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수 | 프로그래머스 (programmers.co.kr)
'공부 > Python' 카테고리의 다른 글
Comments