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

Lee, Chankyu·2021년 9월 10일
0
post-thumbnail

문자열을 정수로 바꾸기

문제 링크

나의 풀이

def solution(s):
    answer = 0
    answer = int(s)
    return answer
  • 따로 부연 설명은 필요하지 않을 듯 하다. int() 를 통해 정수형으로 변환하되 - 도 적용이 된다는걸 다시금 알았다.
    문제에서 int() 함수를 사용하지 말라고 했으면 어떤 방식으로 풀었어야 했나? 에 대한 생각은 해볼 필요가 있다. 다른 사람의 풀이를 통해 파악해보고자 한다.

다른 사람의 풀이

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의 지수만큼 곱해서 더해주었다. 이 풀이에도 중간에 int()가 들어갔지만 이 부분은 지난 글(시저 암호)에서 학습한 아스키코드 개념을 적용하면 int()를 사용하지 않고 처음부터 끝까지 풀이할 수 있을 것이라 생각한다. 이런 방식으로 직접 풀이한 것은 추후 따로 글 작성하겠다.

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
  • 코드의 간결성을 추구하는 파이썬의 이념에는 위배되는 코드구성 일지도 모르겠지만 공부하는 입장에서는 이런 코드 구성도 고려해야한다고 생각한다. 성능측면에서는 다른 결과가 나올수도 있다.
profile
Backend Developer - "Growth itself contains the germ of happiness"

0개의 댓글