프로그래머스/LV.1

[프로그래머스][LV.1] 문자열을 정수로 바꾸기 | python3

발자개a 2025. 1. 15. 10:27

 

문제 링크: 문자열을 정수로 바꾸기

 

문제 설명

문제 설명

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

제한사항
  • s의 길이는 1 이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 "0"으로 시작하지 않습니다.

 


문제 풀이

int를 활용해 정수로 바꿨다. +,- 는 알아서 처리되는듯..

 

내코드

def solution(s):
    answer = int(s)
    return answer

 

 


더보기

다른사람풀이

 

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

 

enumerate 함수 LV.0 문제 풀면서 많이 봤는데 어떤 함수인지 확인을 못하고 넘어갔다.

 

♣ enumerate 함수

- 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받았을 때, 인덱스와 값을 포함하여 리턴

- 주로 for문과 함께 사용한다.

    -> 인덱스와 값에 동시에 접근하면서 루프를 돌리고 싶을때 사용

 

str[::-1] 로 인해 문자열이 거꾸로 루프된다. 문자열이 하나씩 루프되면 각자리수 * (10**(인덱스값)) 을 해줌으로써 str값인 수를 정수값으로 바꾸어 준다. 결과값은 이 값들을 다 더한 값이다. 예를들어 -123은 [::-1]에 의해 321-이 되고 3은 인덱스값이 0이 된다. 3* 10**0 을 해주어 결과값에 더한다. 나머지 수도 똑같이 해주면 문자열값을 정수값으로 변환가능하다.

인덱스[-1] (루프상에서 가장 마지막에 나오는) 에는 +,- 값이 있기 때문에 값이 - 라면 결과값에 -1을 곱한다.

 

def strToInt(str):
    result = 0
    size=len(str)
    temp = 0
    if str [0] == '-' :
        sign = -1
    else :
        sign = 1
    for i in range(0, size) :
        if str[i] == '1' :
            temp = 1
        elif str[i] == '2' :
            temp = 2
        elif str[i] == '3' :
            temp = 3
        elif str[i] == '4' :
            temp = 4
        elif str[i] == '5' :
            temp = 5
        elif str[i] == '6' :
            temp = 6
        elif str[i] == '7' :
            temp = 7
        elif str[i] == '8' :
            temp = 8
        elif str[i] == '9' :
            temp = 9
        else :
            temp = 0
        for i in range(size-i-1) :
            temp = temp * 10
        result = result + temp
    result = result * sign
    return result

 int를 사용하는 것보다 이렇게 if문을 활용하는게 더 시간이 빠르다는 말이 있어서 가지고 왔다. 진짜 더 빠를까?