(프로그래머스)
str 타입의 숫자를 int 타입으로 변환하시오.
[예시]
s |
return |
'12345' |
12345 |
'-12345' | -12345 |
완전 하드코딩 버전
- 문자열 s 의 0번째 값으로 판단하여 양수/음수를 answer 의 값(0)과 덧셈
def solution(s): answer = 0 if s[0] == '-': answer += int(s) else: answer += int(s) return answer >> solution(s) # 12345 # -12345
단순 형 변환에 의한 리턴
- 함수에 들어오는 s 를 형변환하여 answer 에 할당
- 단 이와같은 함수는 새로 들어오는 s 로 answer 이 새로 갱신되기 때문에 기존의 answer 값은 무시됨
- (지역변수에 있는 answer 이 999 이어도 s 의 값으로 새로 갱신)
def solution(s): answer = 0 answer = int(s) return answer >> solution(s) # 12345 # -12345
같은 문제를 봐도 알고리즘 답게 푼 답안
- enumerate 의 index 를 활용, 슬라이싱의 역순 활용[::-1]
- (-1 * 양수 = 음수) 라는 개념 ex) -1 * 30 = -30 // -3 * 10 = -30
- 12345 가 (1 * 10,000) + (2 * 1,000) + (3 * 100) + (4 * 10) + (5 * 1) 이라는 개념
def strToInt(s): result = 0 for idx, number in enumerate(s[::-1]): if number == '-': result *= -1 print(result) else: result += int(number) * (10 ** idx) return result
마지막 답안은 도무지 생각할 수 없는 답안이었다....
** 추가
-1 * 양수에 대한 개념은 한줄로 선을 긋고 가운데를 0으로 두어 생각해보면 답이 나온다.
'기초지식 > 알고리즘' 카테고리의 다른 글
이상한 문자 만들기 (0) | 2019.03.14 |
---|---|
(약수의 합)자연수 n 을 입력받아 n 의 약수를 모두 더한 값을 리턴 (0) | 2019.01.28 |
가운데 글자 가져오기 (0) | 2019.01.19 |
전화번호 뒷 4자리를 제외한 나머지 숫자 전부를 * 로 표시 (0) | 2019.01.18 |
이진 트리 구조에서의 스택 프레임 (feat 재귀함수) (0) | 2018.12.25 |