소소한 컴퓨터 이야기

문자열을 정수로 바꾸기

by Cori

문제

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

 

제한사항

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

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

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

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

 

입출력 예

str return
"1234" 1234

풀이

1. Me

def solution(s):
    return int(s)

이렇게 풀었더니 통과는 했는데, 점수 1점만 추가로 받았다.. 만약에 int 없이 풀었다면 ?

def solution(s):
    answer = 0 
    sign = '' 
    if s[0] == '+' or s[0] == '-':
        sign = s[0]
        s = s[1:]

    for i in range(len(s)):
        if s[i] == '0':
            continue  
        elif s[i] == '1':
            answer += 1 * (10 ** (len(s) - i-1))
        elif s[i] == '2':
            answer += 2 * (10 ** (len(s) - i-1))
        elif s[i] == '3':
            answer += 3 * (10 ** (len(s) - i-1))
        elif s[i] == '4':
            answer += 4 * (10 ** (len(s) - i-1))
        elif s[i] == '5':
            answer += 5 * (10 ** (len(s) - i-1))
        elif s[i] == '6':
            answer += 6 * (10 ** (len(s) - i-1))
        elif s[i] == '7':
            answer += 7 * (10 ** (len(s) - i-1))
        elif s[i] == '8':
            answer += 8 * (10 ** (len(s) - i-1))
        elif s[i] == '9':
            answer += 9 * (10 ** (len(s) - i-1)) 
        
    # print(val)
    if sign == '-':
        answer = answer - (answer * 2)
        
    return answer

이와 같이 작성해보았다. 여담이지만, 이렇게 작성한 코드가 int 함수를 사용하는것보다 속도가 훨 빠르다.. 

 

2. Others

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]과 같이 사용할 경우, 뒤에서부터 순차적으로 읽어들인다. 대단한 사람들 많아.. 

 

* 다음은 리스트 슬라이싱 추가 설명

str_s = 'abcdefgh'

print(str_s[::-1])   # hgfedcba 
print(str_s[::-2])   # hfdb

'CS > Coding Test' 카테고리의 다른 글

다음 큰 숫자  (0) 2021.09.03
숫자의 표현  (0) 2021.09.03
문자열 내 마음대로 정렬하기  (0) 2021.09.03
문자열 내림차순으로 배치하기  (0) 2021.09.03
최솟값 만들기  (0) 2021.09.02

블로그의 정보

코딩하는 오리

Cori

활동하기