문제

* 해당 문제의 모든 저작권은 프로그래머스 측에 있으며 본 블로그는 학업 흔적을 남겨 학업 상향을 위한 블로그로 이익을 추구하지 않으며 프로그래머스 측의 약관을 위배하지 않음을 명시합니다.*

 

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

 

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

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

programmers.co.kr


풀이

개인적인 생각인데 프로그래머스 문제는 백준이나 SWEA보다 기업 코딩테스트에 가깝게 출시되는 것 같다

프로그래머스 1레벨은 알고리즘 문제보다는 구현이나 문자열 처리 문제가 많은 거 같다.

붙어있는 문자들 때문에 temp 버퍼 초기화해주면서 사용하는 방향으로 풀었다.


소스 코드

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

using namespace std;

int solution(string s) {
    int answer = 0;
    string num = "";
    string tmp = "";
    map<string, char> cmap;
    
    cmap["zero"] = '0';
    cmap["one"] = '1';
    cmap["two"] = '2';
    cmap["three"] = '3';
    cmap["four"] = '4';
    cmap["five"] = '5';
    cmap["six"] = '6';
    cmap["seven"] = '7';
    cmap["eight"] = '8';
    cmap["nine"] = '9';
    
    for(int i = 0; i < s.size(); i++) {
        if (isdigit(s[i]) != 0)
            num += s[i];
        else {
            tmp += s[i];
        }
        
        if(cmap.find(tmp) != cmap.end()) {
            num += cmap[tmp];
            tmp = "";
        }
    }
    
    answer = stoi(num);
    
    cout << answer << '\n';
    
    return answer;
}

+ Recent posts