본문 바로가기

개발/알고리즘 & 자료구조

[카카오][2021 인턴십] 숫자 문자열과 영단어

반응형

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

 

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

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

programmers.co.kr

카카오 2021 인턴십 - 숫자 문자열과 영단어 (프로그래머스 문제)

 

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    string answer = "";

    int len=s.length();

    for(int i=0;i<len;i++) {
        char c=s[i];

        if(c>='0'&&c<='9') {
            answer+=c;
            continue;
        }

        if(s.substr(i,3)=="one") {
            answer+='1';
            i+=2;
        } else if(s.substr(i,3)=="two") {
            answer+='2';
            i+=2;
        } else if(s.substr(i,5)=="three") {
            answer+='3';
            i+=4;
        } else if(s.substr(i,4)=="four") {
            answer+='4';
            i+=3;
        } else if(s.substr(i,4)=="five") {
            answer+='5';
            i+=3;
        } else if(s.substr(i,3)=="six") {
            answer+='6';
            i+=2;
        } else if(s.substr(i,5)=="seven") {
            answer+='7';
            i+=4;
        } else if(s.substr(i,5)=="eight") {
            answer+='8';
            i+=4;
        } else if(s.substr(i,4)=="nine") {
            answer+='9';
            i+=3;
        } else if(s.substr(i,4)=="zero") {
            answer+='0';
            i+=3;
        }
    }

    return stoi(answer);
}

 

로직 순서

1. 숫자인지 아닌지 체크

2. 숫자라면 answer에 추가하고 continue; 하여 loop 진행

3. 숫자가 아니라면, 이후 n글자의 부분 문자열(위 코드의 substr)을 체크하여 zero ~ nine 까지의 문자열 비교 검사 수행

4. 해당하는 숫자를 answer에 추가하고 loop 진행

반응형