STUDY 기록/코테기록

[프로그래머스] 문자열을 정수로 바꾸기

TREEKIM 2022. 6. 20. 20:41

문제 설명

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

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

예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

내가 푼 풀이

def solution(s):
    return -1*int(s[1:]) if s[0] == "-" else int(s[:])

 

다른 사람의 풀이

# 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
def strToInt(str):
    result = 0

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

    return result

멋진 풀이입니다. 저도 완전 초보이지만 해설해 드리자면 str[::-1]은 주어진 스트링을 거꾸로 만들어 버립니다. 그 다음에 enumerate 함수를 이용하여 한 글자당 인덱스를 배정해서 각 자리에 10의 지수만큼 곱해서 더해주는 거네요. 예를 들면 "-1234"는 str[::-1]에 의해 "4321-"가 되고 4 * (10 ** 0) + 3 * (10 ** 1) + 2 * (10 **2) + 1 * (10 ** 3)를 한 이후에 "-" 는 이 숫자를 마이너스로 만들어 버립니다.

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

어려운 길로 갈 필요가 없는 문제였네요..정수형으로 바꿀 때 문자 +, -는 알아서 양,음의 기호로 인식하나보네요

배운 점

int 함수는 자동으로 -를 인식하는구나!