어렵지 않은 단순한 문제이다. 영단어로 된 숫자를 정수형 숫자로 바꾸어서 결과를 리턴해주면 된다.
#include <string>
#include <vector>
using namespace std;
int solution(string s)
{
int answer = 0;
string tmp = "";
vector<string> arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(auto c : s)
{
if (isdigit(c)) answer = answer * 10 + c - '0';//숫자면
else tmp.push_back(c);//아니면 임시 판별하는 문자열에 담아둔다.
for(int i=0;i<=9;i++)
{
if (arr[i] == tmp)
{//맞다면
answer = answer * 10 + i;//더해주고
tmp = "";//초기화
break ;
}
}
}
return answer;
}
다른 사람의 풀이중에 신기한 풀이도 참조한다.
#include <bits/stdc++.h>
using namespace std;
int solution(string s) {
s = regex_replace(s, regex("zero"), "0");
s = regex_replace(s, regex("one"), "1");
s = regex_replace(s, regex("two"), "2");
s = regex_replace(s, regex("three"), "3");
s = regex_replace(s, regex("four"), "4");
s = regex_replace(s, regex("five"), "5");
s = regex_replace(s, regex("six"), "6");
s = regex_replace(s, regex("seven"), "7");
s = regex_replace(s, regex("eight"), "8");
s = regex_replace(s, regex("nine"), "9");
return stoi(s);
}