문자열을 정수로 바꾸기
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