문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301
문자와 숫자가 혼합된 형태의 문자열을 숫자로 변환하는 문제였다.
문제 풀이
문자열과 숫자를 키-밸류 값으로 가지는 map을 만들어 풀었다. string을 한 글자씩 검사하며 먼저 숫자인지 확인한 후, map에 있는 string일 경우 숫자를 answer에 더해줬다.
#include <string>
#include <vector>
#include <map>
using namespace std;
map<string,int> num;
void init_map(){
//map 만들기
num.insert({"zero",0});
num.insert({"one",1});
num.insert({"two",2});
num.insert({"three",3});
num.insert({"four",4});
num.insert({"five",5});
num.insert({"six",6});
num.insert({"seven",7});
num.insert({"eight",8});
num.insert({"nine",9});
}
int solution(string s) {
int answer = 0;
init_map();
//printf("%d",num["zero"]);
string checkWord="";
for(int i=0;i<s.length();i++){
if(s[i] >='0' && s[i]<='9'){
answer*=10;
answer+=(s[i]-'0');
}
else{
checkWord+=s[i];
if(num.count(checkWord)>0){
answer*=10;
answer+= num[checkWord];
checkWord="";
}
}
}
return answer;
}