본문 바로가기
알고리즘/프로그래머스

[python] 문자열을 정수로 바꾸기(연습문제)

by 민-Zero 2020. 4. 5.

문제의 목표는 간단하다 입력받은 문자열 s를 숫자로 변경하여 반환하면 된다. 이때 s는 부호와 숫자로만 이루어져 있다.

따라서 s가 "+123"이라면 123을 "-123"이라면 -123을 반환하면 된다.

 

설계 및 구현

구현을 위해 주어진 함수는 숫자로 변환할 매개변수 s를 가지는 간단한 함수이다. 물론 return int(s)를 통해 간단하게 해결할 수 있지만 알고리즘 연습을 위해 형변환 int() 함수는 사용하지 않고 연습을 해보자.

구현의 내용을 생각해보면 해당 문자열을 하나씩 전부 잘라내어 자릿수마다 더해주는 과정이 필요하다 이때 더하려면 해당 문자가 정수형이어야 하므로 문자를 정수로 변환할 dictionary가 필요로 하다. 이때 맨 마지막에 부호를 판별하여 -라면 -1을 곱하여 반환하고 +라면 아무런 동작하지 않고 반환하면 된다.

① s를 문자 하나씩 잘라내기

② 잘라낸 문자를 dictionary에서 알맞은 정수로 변환하여 자릿수마다 더해주기 

③ 맨 마지막 부호가 -라면 -1을 곱해서 반환 +라면 그냥 반환

 

①을 수행하기 위해 reversed함수를 사용한 뒤 list로 변환했다. 이유는 뒤에 있는 숫자가 1의 자리부터 시작하여 자릿수를 맞추기 위해서 이다.

② 0~9의 문자로 표현된 숫자별로 정수 변환을 위해 dictionary타입을 사용하여 key값에 문자로 표현된 숫자를 value에 정수를 맞추어 집어넣었다. 딕셔너리를 사용해 문자를 숫자로 변환하고 1의 자리부터 사용하기 위해 변환한 num리스트의 인덱스 번호를 10의 거듭제곱으로 이용해 자릿수를 맞추어 더했다.

③ 조건문을 통해 "-"가 나온다면 -1을 곱하도록 하고 "+"가 나온다면 continue를 통해 아무런 수행도 하지 않도록 하고 값을 반환하였다.

 

위의 코드로 해당 문제를 통과할 수 있었다.

댓글