본문 바로가기

알고리즘 · 코딩

[프로그래머스] 숫자 문자열과 영단어

2021 카카오 채용연계형 인턴십

 

문제 링크

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

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr


C++ 풀이

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

int solution(string s) {
    int answer = 0;

    //각 숫자 영단어의 앞 두글자와 글자수를 저장함
    vector <pair<string, int> > num_word = { 
    {"ze", 4}, {"on", 3}, {"tw", 3}, {"th", 5}, {"fo", 4},
    {"fi", 4}, {"si", 3}, {"se", 5}, {"ei", 5}, {"ni", 4}};
    
    for (int i = 0; i < s.length(); i++) {
        //숫자인 경우
        if (isdigit(s[i])) {
            answer = (answer * 10) + (s[i] - 48);
        }
        //영단어인 경우
        else {
            for (int j = 0; j < 10; j++) {
                if (s.substr(i, 2) == num_word[j].first) {
                    answer = (answer * 10) + j;
                    i += num_word[j].second - 1;
                    break;
                }
            }
        }
    }
    return answer;
}

 

다른 사람들의 풀이를 구경해보니 regex_replace() 함수를 사용하여 문자열을 치환할 수 있음을 알게 되었다.

 

오늘도 이렇게 배운다.

 

 

반응형