#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으로 바뀌는 거....!!!!!!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 오픈채팅방 - C++, (unordered_map, sstream) (0) | 2021.11.11 |
---|---|
[C++] 베스트 앨범 (해시 문제) (0) | 2021.11.06 |
[프로그래머스/파이썬] 여행경로 (0) | 2021.11.02 |
[프로그래머스/python]단어 변환 (0) | 2021.11.01 |
[C++] 신규 아이디 (0) | 2021.08.29 |