프로그래머스/LV.1
[프로그래머스][LV.1] 문자열을 정수로 바꾸기 | python3
발자개a
2025. 1. 15. 10:27
문제 링크: 문자열을 정수로 바꾸기
문제 설명
문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한사항
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
문제 풀이
int를 활용해 정수로 바꿨다. +,- 는 알아서 처리되는듯..
내코드
def solution(s):
answer = int(s)
return answer
더보기
다른사람풀이
def strToInt(str):
result = 0
for idx, number in enumerate(str[::-1]):
if number == '-':
result *= -1
else:
result += int(number) * (10 ** idx)
return result
enumerate 함수 LV.0 문제 풀면서 많이 봤는데 어떤 함수인지 확인을 못하고 넘어갔다.
♣ enumerate 함수
- 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받았을 때, 인덱스와 값을 포함하여 리턴
- 주로 for문과 함께 사용한다.
-> 인덱스와 값에 동시에 접근하면서 루프를 돌리고 싶을때 사용
str[::-1] 로 인해 문자열이 거꾸로 루프된다. 문자열이 하나씩 루프되면 각자리수 * (10**(인덱스값)) 을 해줌으로써 str값인 수를 정수값으로 바꾸어 준다. 결과값은 이 값들을 다 더한 값이다. 예를들어 -123은 [::-1]에 의해 321-이 되고 3은 인덱스값이 0이 된다. 3* 10**0 을 해주어 결과값에 더한다. 나머지 수도 똑같이 해주면 문자열값을 정수값으로 변환가능하다.
인덱스[-1] (루프상에서 가장 마지막에 나오는) 에는 +,- 값이 있기 때문에 값이 - 라면 결과값에 -1을 곱한다.
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
int를 사용하는 것보다 이렇게 if문을 활용하는게 더 시간이 빠르다는 말이 있어서 가지고 왔다. 진짜 더 빠를까?