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

문제

문자열을 정수로 바꾸기  

 

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

 

제한 조건

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

입출력 예

예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

 

코드

#include <string>

using namespace std;

int solution(string s) 
{
    return stoi(s);
}

 

나의 생각

stoi 함수를 사용하면 문제가 바로 풀린다. 

stoi는 string to int의 약자로 문자열 형태의 숫자를 int형으로 변환한다. 

 

주로 문자열 형태의 10진수를 int형으로 변환할 때 많이 사용되며 2진수 8진수 16진수 형태의 문자열도 파싱 가능하다.

문제를 보면 알겠지만 -123과 같은 문자열도 똑똑하게 음수로 변환한다. 

 

만약 문자열이 숫자로 시작하고 뒤에 문자가 섞여있다면 숫자까지만 변환해서 반환한다.

int main(void)
{
	string str = "123helloworld";

	int num = stoi(str);

	cout << num; // 123 출력
}

 

다른 예로 문자열이 문자로 시작한다면 stoi함수를 에러를 뱉는다.

int main(void)
{
	string str = "helloworld123";

	int num = stoi(str);

	cout << num; // Error!
}