"프로그래머스 133499 옹알이 (2)"의 두 판 사이의 차이

(새 문서: ==개요== {{프로그래머스|레벨=1|페이지=2|분류=연습문제}} ==같이 보기== * 프로그래머스 120956 옹알이 (1) ==C++== <syntaxhighlight lang='cpp'> #incl...)
 
 
6번째 줄: 6번째 줄:


==C++==
==C++==
<syntaxhighlight lang='cpp'>
#include <string>
#include <vector>
using namespace std;
int solution(vector<string> babbling) {
    int answer=0;
    for(string s : babbling) {
        int prev = -1;
        for(int i=0; i<s.length(); i++) {
            if(s.substr(i,3)=="aya" && prev!=1) {
                prev = 1;
                i += 2;
            } else if(s.substr(i,2)=="ma" && prev!=2) {
                prev = 2;
                i += 1;
            } else if(s.substr(i,3)=="woo" & prev!=3) {
                prev = 3;
                i += 2;
            } else if(s.substr(i,2)=="ye" && prev!=4) {
                prev = 4;
                i += 1;
            } else {
                prev = -1;
                break;
            }
        }
        if(prev != -1) answer++;
    }
    return answer;
}
</syntaxhighlight>
<syntaxhighlight lang='cpp'>
<syntaxhighlight lang='cpp'>
#include <string>
#include <string>

2023년 11월 29일 (수) 21:35 기준 최신판

1 개요[ | ]

프로그래머스 133499 옹알이 (2)

2 같이 보기[ | ]

3 C++[ | ]

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

int solution(vector<string> babbling) {
    int answer=0;
    for(string s : babbling) {
        int prev = -1;
        for(int i=0; i<s.length(); i++) {
            if(s.substr(i,3)=="aya" && prev!=1) {
                prev = 1;
                i += 2;
            } else if(s.substr(i,2)=="ma" && prev!=2) {
                prev = 2;
                i += 1;
            } else if(s.substr(i,3)=="woo" & prev!=3) {
                prev = 3;
                i += 2;
            } else if(s.substr(i,2)=="ye" && prev!=4) {
                prev = 4;
                i += 1;
            } else {
                prev = -1;
                break; 
            }
        }
        if(prev != -1) answer++;
    }
    return answer;
}
#include <string>
#include <vector>
using namespace std;

void str_replace_all(string& s, string const& search, string const& replace) {
    string buf;
    size_t pos = 0;
    size_t prevPos;
    buf.reserve(s.size());
    while (true) {
        prevPos = pos;
        pos = s.find(search, pos);
        if (pos == string::npos) {
            break;
        }
        buf.append(s, prevPos, pos - prevPos);
        buf += replace;
        pos += search.size();
    }
    buf.append(s, prevPos, s.size() - prevPos);
    s.swap(buf);
}

bool possible(string message) {
    str_replace_all(message, "aya", "1");
    str_replace_all(message, "ye", "2");
    str_replace_all(message, "woo", "3");
    str_replace_all(message, "ma", "4");
    str_replace_all(message, "11", "X");
    str_replace_all(message, "22", "X");
    str_replace_all(message, "33", "X");
    str_replace_all(message, "44", "X");
    str_replace_all(message, "1", "");
    str_replace_all(message, "2", "");
    str_replace_all(message, "3", "");
    str_replace_all(message, "4", "");
    return message.length() == 0;
}

int solution(vector<string> babbling) {
    int answer = 0;
    for(string& message: babbling) {
        if(possible(message)) answer++;
    }
    return answer;
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}