[C_C++]코딩테스트 연습/[프로그래머스] level 1

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

코딩굼벵이 2021. 7. 16. 19:15
728x90

내 풀이

주요 포인트 )

  1. string에 char를 붙인다.
  2. int에 숫자를 하나씩 붙이려면 10을 곱해서 붙이면 된다.
  3. answer에 숫자를 붙이고 나면 tmp는 비운다. 이를 위해 문자가 완성되지 않았을 때는 else continue 를 주었다.
  4. char를 숫자로 바꾸려면 '0'을 빼주면 된다.
#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 0;
    string tmp;
    for (int i = 0; i < s.size(); i++) {
        if (s[i] >= 'a' && s[i] <= 'z') {
            tmp += s[i];
            if (tmp == "zero") answer *= 10;
            else if (tmp == "one") answer = answer * 10 + 1;
            else if (tmp == "two") answer = answer * 10 + 2;
            else if (tmp == "three") answer = answer * 10 + 3;
            else if (tmp == "four") answer = answer * 10 + 4;
            else if (tmp == "five") answer = answer * 10 + 5;
            else if (tmp == "six") answer = answer * 10 + 6;
            else if (tmp == "seven") answer = answer * 10 + 7;
            else if (tmp == "eight") answer = answer * 10 + 8;
            else if (tmp == "nine") answer = answer * 10 + 9;
            else continue;
            tmp = "";
        }
        else answer = answer * 10 + (s[i] - '0');
    }

    return answer;
}