컴퓨터는 잘못이 없다..
[Python]프로그래머스 강의_파이썬을 파이썬 답게 파트2. 정수 다루기_n진법으로 표기된 string을 10진법 숫자로 변환하기(파이썬 진법변환, enumerate, int(x,base) ) 본문
[Python]프로그래머스 강의_파이썬을 파이썬 답게 파트2. 정수 다루기_n진법으로 표기된 string을 10진법 숫자로 변환하기(파이썬 진법변환, enumerate, int(x,base) )
도토리까꿍v 2021. 5. 5. 19:16#문제 링크
파이썬을 파이썬답게 - n진법으로 표기된 string을 10진법 숫자로 변환하기 | 프로그래머스 (programmers.co.kr)
파이썬을 파이썬답게 - n진법으로 표기된 string을 10진법 숫자로 변환하기
본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코
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)
파이썬을 파이썬답게 - n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수
본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코
programmers.co.kr