알고리즘/이것저것

[프로그래머스] 문자열을 정수로 바꾸기 - 파이썬(python)

아뵹젼 2022. 9. 3.

 

 

나의 풀이

def solution(s):
    
    if s[0] == '-' :
        return -(int(s[1:]))
    elif s[0] == '+' :
        return int(s[1:])
    else :
        return int(s)
        
    return answer

맨 앞이 +,- 와 같은 부호로 시작하는 경우에는 1번째 인덱스부터 시작하는 문자열을 int형으로 바꾸고, 해당 부호 처리를 해주었다.

한편 부호가 없는 경우에는 그냥 문자열을 int 형으로 변환하였다.

 

 

 

다른 풀이

def solution(str):
    #함수를 완성하세요
    a = int(str)
    return a

하핫,, 부호 처리를 해줄 필요가 없었다!!

문자열을 int() 형 처리해줄 때는 알아서 부호를 인식하나보다..! 

 

 

def solution(s):
    result = 0

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

    return result

우와..이런 풀이도 가능하다니...!

s[::-1] 은 문자열의 끝에서부터 역순으로 읽어들이는 것을 뜻한다.

따라서 enumerate() 로 얻게 된 인덱스를 이용하여 1의자리부터~n의자리까지 10의 제곱수만큼 곱하는 형식이다.

 

예로 "-1234" 라는 문자열이 주어졌다고 하자.

4321- 을 순회하게 될 것이다.

먼저 4의 경우 4 * 10**0 = 4

3의 경우 3 * 10**1 = 30

2의 경우 2 * 10**2 = 200

1의 경우 1 * 10**3 = 1000

-> -1234 

댓글