안녕 세상아,

[프로그래머스/c++] Lv1 숫자 문자열과 영단어 본문

프로그래머스

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

돈 많은 백수가 되고싶다 2024. 9. 13. 14:41

https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=cpp

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 숫자를 영어로 바꾸는 배열을 만든다. 

2. 변수 str을 선언하여 만약 s[i]가 문자라면 str에 삽입한다.

3. 만약 s[i]가 숫자면 바로 answer에 삽입한다. 

4. 숫자가 아니라면 str에 문자를 삽입한 후 만약 해당 str이 arr 배열의 string과 같으면 해당 j를 answer에 삽입한다. 

5. 삽입 후에는 str을 clear 해준 후 break 해준다. 

#include <string>
#include <vector>

using namespace std;

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

    string arr[10] = { "zero","one","two","three","four","five","six","seven","eight","nine" };

    string str = "";

    for (int i = 0; i < s.size(); i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            answer = answer * 10 + (s[i] - '0');
        }
        else {
            str += s[i];
            for (int j = 0; j < 10; j++) {
                if (arr[j] == str) {
                    answer = answer * 10 + j;
                    str.clear();
                    break;
                }
            }
        }
    }
    return answer;
}

 

regex를 사용하면 더 간단하게 풀 수 있던데..regex 몰라요ㅠ...공부하고 정리해보는걸루 ㅠ