본문 바로가기

Computer Science/알고리즘 문제풀이

[Programmers] #19 문자열을 정수로 바꾸기 [Python]

문자열을 정수로 바꾸기


문제: https://programmers.co.kr/learn/courses/30/lessons/12925





1. 문제


문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.


제한 조건

s의 길이는 1 이상 5이하입니다.

s의 맨앞에는 부호(+, -)가 올 수 있습니다.

s는 부호와 숫자로만 이루어져있습니다.

s는 0으로 시작하지 않습니다.


입출력 예

예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.

str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.




2. 나의 코드

def solution(s):
    answer = 0
    
    if len(s) >=1 and len(s) <=5 :
        answer = int(s)
    
    return answer



3. 다른 사람 코드


for idx, number in enumerate(str[::-1]):
        if number == '-':
            result *= -1
        else:
            result += int(number) * (10 ** idx)

    return result


4. 보완


1) <enumerate() 함수>


for i, name in enumerate(['body', 'foo', 'bar']):

...     print(i, name)

...

0 body

1 foo

2 bar


순서값과 함께 body, foo, bar가 순서대로 출력되었다. 즉, 위 예제와 같이 enumerate를 for문과 함께 사용하면 자료형의 현재 순서(index)와 그 값을 쉽게 알 수 있다.

for문처럼 반복되는 구간에서 객체가 현재 어느 위치에 있는지 알려주는 인덱스 값이 필요할때 enumerate 함수를 사용하면 매우 유용하다.

-출처: 점프 투 파이썬-


2) python array[::] 용법

arr[A:B:C]의 의미는, index A 부터 index B 까지 C의 간격으로 배열을 만들어라  라는 뜻.

만약 list =[1,2,3,4,5,6] 일때,

list[::-1]는 역순으로 처음부터 끝까지 1간격으로 배열을 만들라는 뜻.

list[1:5:2]는 인덱스 1부터 인덱스 5까지 2칸간격으로 배열을 만들라는 뜻.


맨 끝 인덱스(index B) 포함


출처: http://blog.wonkyunglee.io/3 [Kascia's blog]