본문 바로가기
Problem Solving

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

by wadekang 2022. 3. 4.

프로그래머스 숫자 문자열과 영단어 [2021 카카오 채용연계형 인턴십]
https://programmers.co.kr/learn/courses/30/lessons/81301
 

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

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

programmers.co.kr

문제 풀이

  • 이 문제는 map에 직접 zero ~ nine까지 선언한 후, 문자열을 한 자씩 더해가면서 map에 해당하는 단어가 있다면 숫자를 더해주는 방식으로 해결했습니다. 

코드

#include <string>
#include <vector>
#include <map>

using namespace std;

map<string, int> m;

int solution(string s) {
    string answer = "";
    
    m["zero"] = 0;
    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 tmp = "";
    for(char c: s) {
        if(isdigit(c)) answer += c;
        else tmp += c;
        
        if(m.find(tmp) != m.end()) {
            answer += to_string(m[tmp]);
            tmp = "";
        }
    }
    
    return stoi(answer);
}

실행 결과

 

댓글