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

수민이슈·2023년 4월 18일
0

[C++] 코딩테스트

목록 보기
18/116
post-thumbnail

🖊️ 문제

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

🖊️ 풀이

Map을 이용해서 푼다.
함수를 이용해서 초기화하고,
isdigit() 함수를 통해 string이 숫자인지 아닌지 판별하고
um과 비교해서 대체해준다.

처음에 냅다 벡터에 갖다 박았는데
맵 쓰는 법을,, 활용해봅시당.

🖊️ 코드

#include <string>
#include <vector>
#include <unordered_map>
#include <cstring>
#include <iostream>

using namespace std;

unordered_map<string, string> um;

void MakeMap() {
    um["zero"] = "0";
    um["one"] = "1";
    um["two"] = "2";
    um["three"] = "3";
    um["four"] = "4";
    um["five"] = "5";
    um["six"] = "6";
    um["seven"] = "7";
    um["eight"] = "8";
    um["nine"] = "9";
}

int solution(string s) {
    int answer = 0;
    string str;
    string temp;
    
    MakeMap();
    
    for (int i = 0 ; i < s.length() ; i++) {
        if(isdigit(s[i])) {
            str += s[i];
        }
        else {
            temp += s[i];
        }
        if (um.find(temp) != um.end()) {
            str += um[temp];
            temp = "";
        }
    }
    answer = atoi(str.c_str());
    
    return answer;    
}

https://ohsol.tistory.com/15

0개의 댓글