๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด( Level 1, 2021 ์นด์นด์˜ค ์ธํ„ด์‹ญ)

by ์•ˆ์ฃผํ˜• 2021. 10. 21.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

๋„ค์˜ค์™€ ํ”„๋กœ๋„๊ฐ€ ์ˆซ์ž๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์—๊ฒŒ ์ˆซ์ž๋ฅผ ๊ฑด๋„ฌ ๋•Œ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ์นด๋“œ๋ฅผ ๊ฑด๋„ค์ฃผ๋ฉด ํ”„๋กœ๋„๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

char mapping(string number){
    if(number =="zero") return '0';
    if(number =="one") return '1';
    if(number =="two") return '2';
    if(number =="three") return '3';
    if(number =="four") return '4';
    if(number =="five") return '5';
    if(number =="six") return '6';
    if(number =="seven") return '7';
    if(number =="eight") return '8';
    if(number =="nine") return '9';
    return '0';
}

bool check(string number){
    for(int i=0; i<11; i++){
        if(number =="zero") return true;
        if(number =="one") return true;
        if(number =="two") return true;
        if(number =="three") return true;
        if(number =="four") return true;
        if(number =="five") return true;
        if(number =="six") return true;
        if(number =="seven") return true;
        if(number =="eight") return true;
        if(number =="nine") return  true;
    }
    return false;
}
int solution(string s) {
    int answer = 0;
    string temp = "", number ="";
    
    for(int i=0; i<s.length()+1; i++){
        bool flag = check(temp);
        char mapping_num;
        if(flag){
            number+=mapping(temp);
            temp.clear();
        }
        if(s[i]>='a'&&s[i]<='z') temp+=s[i];
        else{
            if(!temp.empty()){
                number +=mapping_num;
            }
            number+=s[i];
            temp.clear();
        }
    }
    answer = stoi(number);
    return answer;

 

ํ’€์ด(19๋ถ„)

๋ฌธ์ œ ์ž์ฒด๋Š” ์‰ฌ์› ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ง€์ €๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ค๊ฐ€ c++์˜ regex ์ •๊ทœ์‹ ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

#include <string>
#include <vector>
#include <regex>

using namespace std;

int solution(string s) {
    int answer = 0;
    
    s = regex_replace(s, regex("zero"),"0");
    s = regex_replace(s, regex("one"),"1");
    s = regex_replace(s, regex("two"),"2");
    s = regex_replace(s, regex("three"),"3");
    s = regex_replace(s, regex("four"),"4");
    s = regex_replace(s, regex("five"),"5");
    s = regex_replace(s, regex("six"),"6");
    s = regex_replace(s, regex("seven"),"7");
    s = regex_replace(s, regex("eight"),"8");
    s = regex_replace(s, regex("nine"),"9");
    answer = stoi(s);
    return answer;
}

์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€