c++/프로그래머스 1 Lv

[프로그래머스] 문자열을 정수로 바꾸기

모든 것을 처음 시작하는 초짜 개발자 2023. 8. 22. 11:26

문제

문자열 s를 숫자로 변환한 결과를 변환하는 함수, solution을 완성하세요

 

제한사항

  • s의 길이는 1이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 "0"으로 시작하지 않습니다.

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12925

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이[c++]

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 0;
    bool minus(false);
    for(int i=0;i<s.length();i++){
        if(s[i]==45){
            minus=true;
        }
        answer *= 10;
        if(s[i]>=48)
            answer += s[i]-48;
    }
    if(minus) answer*=-1;
    return answer;
}

이 문제에서 고려해야할 점은 맨앞에 부호가 온다는 것이다. 

부호가 올 경우 아스키코드에서 +는 43, -는 45이므로 이에 맞는 예외처리를 한다. 위 코드에서는 +는 무시하고 -는 bool minus에 값을 담아두었다가 마지막에 -을 곱해 주었다.

숫자는 문자에 아스키코드를 사용해 만든다.