NIRVANA
[DAY-2] 프로그래머스 문자열을 정수로 바꾸기 본문
문제
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
문제 풀이 접근법1
1) int()함수를 사용하여 문자열 s를 숫자로 변경한다.
def solution(s):
return int(s)
int()함수를 사용할 때 '-'부호가 있으면 변환이 안되는 줄 알았는데
찾아보니까 된다고 해서 설마..? 하면서 했는데 엥 진짜 됨...
참고: https://engineer-mole.tistory.com/329
문제 풀이 접근법2
1) 문자열 s에서 count()함수를 사용하여 '-'의 존재 여부를 판단한다
2) '-'가 있을 경우 int()함수를 사용하여 정수로 변환한 값을 0에서 빼내어 음수값이 나올 수 있도록한다.
* 그냥 int(s)로 하면 -1234에 또 마이너스가 붙어서 양수가 되길래 부호 부분은 제외하고 int형으로 변경했다.
3) '-'가 없을 경우 int()함수를 사용하여 정수로 변환한 뒤 반환한다.
def solution(s):
answer = 0
if s.count('-') > 0:
answer = 0-int(s[1:])
else:
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
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(strToInt("-1234"));
3행에서 enumerate를 사용하여 str[::-1](결과값: str을 반대로 뒤집음)의 원소와 해당 원소의 인덱스 넘버를 반환한다.
4행에서 if문을 사용하여 만약 원소가 '-'라면 result에 -1을 곱한다.
5행에서 else를 통해 만약 원소가 '-'가 아닐 경우, result에 문자열 원소를 int형으로 바꾼 값과 10의 지수(10^idx)를 곱한 값을 더한다.
즉, 위의 코드 결과는 (1*10^3) + (2*10^2) + (3*10^1) + (4*10^0) = (1*1000) + (2*100)+(3*10)+(4*1) = 1234가 된다.
진짜 흥미로운 접근인듯
💡 알게 된 것
int()함수를 사용하여 문자열을 정수형으로 변경할 때, 마이너스 부호('-')가 있어도 변환 가능하다.
'Coding test(Python3) > 스터디' 카테고리의 다른 글
[DAY-6] 백준 9012번 괄호 (0) | 2024.05.22 |
---|---|
[DAY-5] 백준 10773번 제로 (0) | 2024.05.21 |
[DAY-4] 백준 28278번 스택 2 (0) | 2024.05.21 |
[DAY-3] 프로그래머스 약수의 합 (0) | 2024.05.20 |
[DAY-1] 프로그래머스 문자열 내 p와 y의 개수 (0) | 2024.05.18 |