#include <algorithm>
#include <string>
#include <map>

using namespace std;
map<string, string> m;

void insertData() {
    m.insert(pair<string , string>("0", "zero"));
    m.insert(pair<string, string>("1", "one"));
    m.insert(pair<string, string>("2", "two"));
    m.insert(pair<string, string>("3", "three"));
    m.insert(pair<string, string>("4", "four"));
    m.insert(pair<string, string>("5", "five"));
    m.insert(pair<string, string>("6", "six"));
    m.insert(pair<string, string>("7", "seven"));
    m.insert(pair<string, string>("8", "eight"));
    m.insert(pair<string, string>("9", "nine"));
}

//영단어 -> 숫자
int solution(string s) {
    insertData();

    string answer = "";

    while (!s.empty()) {
        map<string, string>::iterator iter;
        //숫자이면
        if (s[0] >= '0' && s[0] <= '9') {
            answer += s[0];
            s.erase(0,1);
            continue;
        }
        for (iter = m.begin(); iter != m.end(); iter++) {
            int spos = s.find(iter->second, 0);
            //string일 경우 int로 변환
            if (spos != string::npos && spos == 0) {
                answer += iter->first;
                s.erase(0, iter->second.size());
            }
        }
    }

    return stoi(answer);
}

나는 map을 만들었는데.. 사실 그냥 vector<string>을 이용해서 문자들 넣고, 그 인덱스를 활용하면 되는 거였음!!!

그러고 regex_replace라는 메서드를 사용하면 되는거였음....

아직 메서드에 대해서 잘 몰라서 이렇게 힘들게 풀었다 .. 하핫

이제 알았으니, 다음에는 이거 활용해서 잘 풀어보기.

 

regex_replace : 정규식에 일치하는 부분들을 찾아서 모조리 원하는 문자열로 치환해주는 함수.

 

#include<regex>

 

s = regex_replace(s, 문자열벡터의 i번째 문자, to_string(i)); 로 하면 그냥 zero가 0으로 바뀌는 거....!!!!!!