본문으로 바로가기

str 타입의 '-12345' 를 int 타입으로 변환

category 기초지식/알고리즘 2019. 1. 21. 21:58

(프로그래머스)

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으로 두어 생각해보면 답이 나온다.