컴퓨터는 잘못이 없다..

[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)

 

파이썬을 파이썬답게 - 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도 몰라서 이렇게 못풀었다.

for문에서 idx와 number의 변화를 확인하자!

 

▲이렇게 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

 

Comments