Kiki Devlog

숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십) 본문

Coding Test/프로그래머스

숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십)

kimkiki 2022. 1. 3. 00:59
728x90

regex_replace 가 뭔지 몰라서 코드가 확늘어남. 이걸 지금 알다니

잊지말구 잘써먹기

 

수정 전 코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(string s) {
    int answer = 0;
    string ans ;
    string numString;
    
    for (char a : s){
        //숫자라면
        if (int(a) >= 48 && int(a) <= 57 ){
            ans+=a;
        }
        else{//문자라면
            numString += a;

            if(numString == "zero"){
                ans+="0";
                numString = "";
            }
            else if(numString == "one"){             
                ans+="1";
                numString = "";
            }
            else if(numString == "two"){
                ans+="2";
                numString = "";
            }
            else if(numString == "three"){
                ans+="3";
                numString = "";
            }
            else if(numString == "four"){
                ans+="4";
                numString = "";
            }
            else if(numString == "five"){
                ans+="5";
                numString = "";
            }
            else if(numString == "six"){
                ans+="6";
                numString = "";
            }
            else if(numString == "seven"){
                ans+="7";
                numString = "";
            }
            else if(numString == "eight"){
                ans+="8";
                numString = "";
            }
            else if(numString == "nine"){
                ans+="9";
                numString = "";
            }
            
        }
    }
    answer = stoi(ans);
    return answer;
}

 

regex를 썼다면..

수정 후 코드

#include <string>
#include <vector>
#include <algorithm>
#include <regex>

using namespace std;

vector<string> engNum = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};

int solution(string s) {
    int answer = 0;
    regex r;
    for(int i = 0; i < engNum.size(); i++) {
        r = engNum[i];
        s = regex_replace(s, r, to_string(i));//s에서 r을  to_string(i) 로 바꿈
    }
    answer = stoi(s);
    return answer;
}
Comments