<문제>
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
<풀이>
def solution(s):
s = int(s)
return s
<다른 풀이>
def solution(str):
result = 0
for idx, number in enumerate(str[::-1]):
if number == '-':
result *= -1
else:
result += int(number) * (10 ** idx)
return result
<코드 해설>
다른 풀이법에서, enumerate를 쓴 것이 인상깊는다. enumerate는 반복문을 사용 할 때 몇 번째 반복문인지 인덱스 번호를 매겨주는 요소라고 생각하면 된다. 코드 설명은 다음과 같다.
예) '1234'입력
str[::-1]에 의해 4321로 바뀜.
이때, enumerate에 의해 idx = 0, number = 4
else구문에서 reseult값은 int(4)*(10**0) = 4
for문에 의해 다시 돌아가면 idx = 1, number = 3
else구문에서 reseult값은 int(3)*(10**1) = 30
result += 에 의해 4 + 30 = 34 도출
이러한 형태로 1까지 가게 되면 1234 정수 값이 도출된다.
예) '-1234'입력
str[::-1]에 의해 4321-로 바뀜.
위에 설명한대로 idx = 3, number 1까지 했을 경우 1234가 도출된다.
그 후, - 가 있으니 1234 * '-' 값인 -1234 도출
<느낀점>
알고리즘을 알고리즘처럼 푸는 것이 쉽지 않다.