n진법으로 표기된 string을 10진법 숫자로 변환하기 - int함수
2018년12월05일프로그래머스라는 사이트의 “파이썬을 파이썬답게”라는 강의를 보면서 문제를 풀고있다. n진법으로 표기된 string을 10진법 숫자로 변환하기 문제인데
입력에서 12 3 => 5
444 5 => 124
이렇게 표시되어야 한다.
그래서 나는 이런식으로 구현해봤다.
num, base = map(int, input().strip().split(' '))
result = 0
for i in range(len(str(num))): //num을 문자열로 변환
result += int(str(num)[-1-i])*(base**i) //인덱스를 [-1-i]로 하여 맨뒤부터 시작하게 하고, 멱승을 이용해 계산해주고, result에 더해준다.
print(result)
이건 사이트에 있는 코드
num = '3212'
base = 5
answer = 0
for idx, i in enumerate(num[::-1]):
answer += int(i) * ( base ** idx )
이런식으로 했는데.. 파이썬에서는 훨씬 쉬운 방법이 있다.
num=444
base=5
answer = int(num,base)
=> 124
확실히 강좌명처럼 파이썬을 파이썬답게 쓰는 방법이 있는 것을 느꼈고, 이를 잘 활용해서 시간 절약을 할 수 있도록 해야겠다. 그래도 동작과정을 이해하는 것 또한 중요하다고 생각하니 한 번씩은 생각해보는것도 좋을 듯 하다.