class Solution {
public:
    string st;
    vector<string> ans;
    void dfs(int idx,string temp,int cnt){
        if(cnt==4){
            if(idx==st.length()){
                ans.push_back(temp.substr(0,temp.length()-1));return;
            }
        }
        vector<string> t;string a="";
        for(int i=idx;i<st.length();i++){
            if(0<=st[i]-'0'&&st[i]-'0'<=9){
                a+=st[i];
                if(0<=stoi(a)&&stoi(a)<=255){
                    t.push_back(a);
                }else break;
            }else break;
        }
        for(int i=0;i<t.size();i++){
            string a = t[i];
            if(a.length()!=1&&a[0]=='0') continue;
            dfs(idx+i+1,temp+t[i]+".",cnt+1);
        }
    }
    vector<string> restoreIpAddresses(string s) {
        st = s;string a = "";
        dfs(0,a,0);
        return ans;
    }
};

재귀로 했습니다
지적이나 조언 매우감사합니다