코딩테스트

[코딩테스트] 숫자 문자열과 영단어

슬깃 2021. 9. 8. 01:29

문제

 


코드

#include <string>
#include <vector>

using namespace std;

int toNumbeer(string str)
{
    if (str == "orez")
        return 0;
    else if (str == "eno")
        return 1;
    else if (str == "owt")
        return 2;
    else if (str == "eerht")
        return 3;
    else if (str == "ruof")
        return 4;
    else if (str == "evif")
        return 5;
    else if (str == "xis")
        return 6;
    else if (str == "neves")
        return 7;
    else if (str == "thgie")
        return 8;
    else if (str == "enin")
        return 9;

    return 10;
}

int solution(string s) {
    int answer = 0;
    string t = "";
    int size = s.size();
    int value = 1;

    for (int i = size - 1; i >= 0; i--)
    {
        if (isdigit(s[i]) == 0) // 0이면 문자 크면 숫자
        {
            t += s[i];

            int a = toNumbeer(t);
            if (a != 10)
            {
                t = "";
                answer += a * value;
                value *= 10;
            }
        }
        else
        {
            answer += (s[i] - '0') * value;
            value *= 10;
        }
    }

    return answer;
}