C++:: 프로그래머스 < 숫자 문자열과 영단어 >

jahlee·2023년 6월 4일
0

프로그래머스_Lv.1

목록 보기
34/75
post-thumbnail

어렵지 않은 단순한 문제이다. 영단어로 된 숫자를 정수형 숫자로 바꾸어서 결과를 리턴해주면 된다.

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

int solution(string s)
{
    int answer = 0;
    string tmp = "";
    vector<string> arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
    for(auto c : s)
    {
        if (isdigit(c)) answer = answer * 10 + c - '0';//숫자면
        else tmp.push_back(c);//아니면 임시 판별하는 문자열에 담아둔다.
        for(int i=0;i<=9;i++)
        {
            if (arr[i] == tmp)
            {//맞다면
                answer = answer * 10 + i;//더해주고
                tmp = "";//초기화
                break ;
            }
        }
    }
    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);
}

0개의 댓글