문자열을 정수로 바꾸기
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
블로그의 정보
코딩하는 오리
Cori