본문 바로가기

Algorithm/String

(C++) - 프로그래머스(2021 카카오 채용연계형 인턴십) : 숫자 문자열과 영단어

반응형

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

 

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

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

programmers.co.kr

간단한 문자열 문제였습니다.

 

풀이방법

 1. map에 각 대응 문자와 숫자를 저장합니다.

 2. 단어를 읽으며 적절히 매칭되었다면 정답에 문자를 추가해줍니다.

 3. 문자를 수로 바꿔 반환합니다.

 

Code

#include <bits/stdc++.h>
using namespace std;

int solution(string s) {
    map<string,int> m;
    m["zero"] = -1;
    m["one"] = 1;
    m["two"] = 2;
    m["three"] = 3;
    m["four"] = 4;
    m["five"] = 5;
    m["six"] = 6;
    m["seven"] = 7;
    m["eight"] = 8;
    m["nine"] = 9;

    string answer = "";
    string tmp = "";
    for(int i = 0; i < s.size(); i++){
        tmp += s[i];
        if('0' <= s[i] && s[i] <= '9'){
            answer+= s[i];
            tmp = "";
        }
        else if(m[tmp]){
            if(tmp == "zero") answer += '0';
            else answer += to_string(m[tmp]);
            tmp = "";
        }
    }
    return stoi(answer);
}