JSITCLUB

파이썬 - 프로그래머스 - 문자열을 정수로 바꾸기 본문

파이썬/문제풀이

파이썬 - 프로그래머스 - 문자열을 정수로 바꾸기

jsitclub 2019. 12. 30. 16:03

프로그래머스 level 1 

문제 설명

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

제한 조건

  • s의 길이는 1 이상 5이하입니다.

  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.

  • s는 부호와 숫자로만 이루어져있습니다.

  • s는 0으로 시작하지 않습니다.

입출력 예

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

 

 

코딩테스트 연습 - 문자열을 정수로 바꾸기

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니

programmers.co.kr

 

풀이 및 코드

 

사실 이 문제는 파이썬에서는 아주 간단히 처리할 수 있습니다. 그냥 형 변환으로 간단히 끝낼 수 있기 때문입니다.

def solution(s):
    return int(s)

하지만 이 방법은 너무 파이썬에 치우친 방법이므로, 다른 언어에서도 사용 가능한 방법을 생각해 보겠습니다.

우리가 흔히 사용하는 수는 십진수를 사용합니다. 

즉 1234는 1 * 1000 + 2 * 100 + 3 * 10 + 4 * 1을 의미합니다.

이것을 이용해 한 자리씩 바꿔보면 다음과 같습니다.

def solution(s):

    result=0
    
    plus=True
    for i in range(len(s)):

        if s[i]=="-":
            plus=False
        elif s[i]=="+":
            plus=True
        else:
            result=result*10 + int(s[i])
    
    if plus==False:
        return -1 * result
    else:
        return result


print(solution("+14215"))

주의 할것은 우리가 흔히 숫자를 생각하면 1265 나 -1342 형태를 생각하지만, 문제에서는 분명히 +,-,숫자로 구성되어 있다고 했으니 +1354 와 같이 앞에 +기호가 붙은것도 생각해 주어야 합니다. 나올수 있는 경우를 빠뜨리지 않는것이 프로그래밍 할때 중요 합니다.

또한 프로그래머스에서 요구하는것은 함수를 완성하는것이므로, 제출할 때는 제일 밑의 print(solution("+14215")) 문장은 제외하고 위의 solution함수의 내용만 제출합니다.

Comments