본문 바로가기
전공공부/코딩테스트

(c++) 프로그래머스 숫자 문자열과 영단어

by 시아나 2022. 1. 6.

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

 

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

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

programmers.co.kr


나의 풀이

#include <string>
#include <vector>
#include <cctype>

using namespace std;

int solution(string s) {
    string answer = "";
    for (int i = 0; i < s.size();) {
        if (isdigit(s[i])) {
            answer += s[i++];
        }
        else {
            switch (s[i]) {
            case 'z':
                answer += '0';
                i += 4;
                break;
            case 'o':
                answer += '1';
                i += 3;
                break;
            case 't':
                if (s[i + 1] == 'w') {
                    answer += '2';
                    i += 3;
                }
                else {
                    answer += '3';
                    i += 5;
                }
                break;
            case 'f':
                if (s[i + 1] == 'o') {
                    answer += '4';
                }
                else {
                    answer += '5';
                }
                i += 4;
                break;
            case 's':
                if (s[i + 1] == 'i') {
                    answer += '6';
                    i += 3;
                }
                else {
                    answer += '7';
                    i += 5;
                }
                break;
            case 'e':
                answer += '8';
                i += 5;
                break;
            case 'n':
                answer += '9';
                i += 4;
                break;
            default:break;
            }
        }
    }
    return stoi(answer);
}

 

regex를 사용하면 간단하게 풀 수 있다.