https://school.programmers.co.kr/learn/courses/30/lessons/81301
숫자단어를 벡터로 만들어놓고 s의 글자 하나하나 검사해가면서 숫자면 바로 ans에 더해주고 영어면 쌓아가면서 크기가 3이상이되면 vec에서 find해서 있으면 index를 구해서 ans에 더해준다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string s) {
int answer = 0;
vector<string> vec = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
string ans;
string num;
for(char c : s)
{
if(isdigit(c))
ans += c;
else
num += c;
if(num.size() >= 3)
{
if(find(vec.begin(), vec.end(),num) != vec.end())
{
ans += (find(vec.begin(), vec.end(),num) - vec.begin() + '0');
num.clear();
}
}
}
answer = stoi(ans);
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);
}
regex(정규 표현식) 을 사용하였다.
regex_replace(대상 문자열, regex(정규식), 치환 문자열);을 사용하였다.