티스토리 뷰

1. 문제

문제 설명

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

제한 조건

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

입출력 예

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

 

2. 풀이 과정

def solution(s):
    return int(s)

 

3. 다른 사람의 풀이

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] : 문자열을 거꾸로 뒤집어버림

단순하게 int()를 쓰고 끝낸 것이 아니라 문자열을 정수로 바꾸는 알고리즘의 정석대로 푼 풀이이다.

 

문제를 어떻게 생각하고 받아들이냐에 따라 풀이가 엄청나게 달라지는 것 같다.

 

다른 사람들처럼 중간에 int()를 쓴 것이 아쉬워서 다음과 같이 조금 고쳐보았다.

 

def strToInt(str):
    result = 0

    numbers = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, }
    for idx, number in enumerate(str[::-1]):
        if number == '-':
            result *= -1
        else:
            result += numbers[number] * (10 ** idx)

    return result

'Algorithm > Programmers' 카테고리의 다른 글

두 정수 사이의 합  (0) 2020.02.14
약수의 합  (0) 2020.02.08
서울에서 김서방 찾기  (0) 2020.02.04
짝수와 홀수  (0) 2020.02.04
평균 구하기  (0) 2020.01.30
댓글