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

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

by 민-Zero 2020. 4. 5.

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

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

 

설계 및 구현

구현을 위한 함수는 반환 타입 int를 가지며 숫자로 변환할 매개변수 string타입 s를 가진다. 구현을 위한 내용은 파이썬에서 고안했으므로 바로 구현하자.

① s를 문자 하나씩 잘라내기, 문자를 정수로 변환하기 위한 테이블 준비

② 잘라낸 문자를 테이블에서 찾아서 알맞은 정수로 변환하고 자릿수마다 더해주기 

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

 

① 각 문자를 알맞은 숫자로 변환하기 위한 테이블을 위해 map을 사용하여 key값에 아스키코드를 이용해 변환한 문자를 value에 해당 문자에 알맞은 정수를 저장했다. 이때 48을 더한 이유는 아스키코드에서 문자 0을 뜻하는 값이 48이기 때문이다. 또 문자를 하나하나 잘라서 num이라는 벡터에 추가한 후 1의 자리부터 시작하게 하기 위해 algorithm헤더의 reverse함수를 사용하여 num벡터를 거꾸로 뒤집었다.

② pow()함수를 사용해 인덱스 번호를 통해 10의 거듭제곱을 구하여 자릿수를 맞추고 테이블에서 1의 자리 숫자부터 정수로 반환하여 저장하였다.

③ 이때 '-' 문자가 나오면 -1을 곱하고 '+' 문자가 나오면 continue를 통해 아무런 기능을 수행하지 않고 넘겨 부호를 맞추어주었다.

 

위의 코드를 통해 채점을 통과할 수 있었다.

댓글