[프로그래머스/C++]Lv.1 - 숫자 문자열과 영단어

YH J·2023년 6월 5일
0

프로그래머스

목록 보기
115/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/81301

내 풀이

숫자단어를 벡터로 만들어놓고 s의 글자 하나하나 검사해가면서 숫자면 바로 ans에 더해주고 영어면 쌓아가면서 크기가 3이상이되면 vec에서 find해서 있으면 index를 구해서 ans에 더해준다.

내 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(string s) {
    int answer = 0;
    vector<string> vec = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
    string ans;
    string num;
    for(char c : s)
    {
        if(isdigit(c))
            ans += c;
        else
            num += c;
        if(num.size() >= 3)
        {
            if(find(vec.begin(), vec.end(),num) != vec.end())
            {
                ans += (find(vec.begin(), vec.end(),num) - vec.begin() + '0');
                num.clear();
            }
        }
    }
    answer = stoi(ans);
    return answer;
}

다른 사람의 풀이

#include <bits/stdc++.h>
using namespace std;

int solution(string s) {
    s = regex_replace(s, regex("zero"), "0");
    s = regex_replace(s, regex("one"), "1");
    s = regex_replace(s, regex("two"), "2");
    s = regex_replace(s, regex("three"), "3");
    s = regex_replace(s, regex("four"), "4");
    s = regex_replace(s, regex("five"), "5");
    s = regex_replace(s, regex("six"), "6");
    s = regex_replace(s, regex("seven"), "7");
    s = regex_replace(s, regex("eight"), "8");
    s = regex_replace(s, regex("nine"), "9");    
    return stoi(s);
}

다른 사람의 풀이 해석

regex(정규 표현식) 을 사용하였다.
regex_replace(대상 문자열, regex(정규식), 치환 문자열);을 사용하였다.

profile
게임 개발자 지망생

0개의 댓글