Programmers Review
[Lv 1] 옹알이 (2)
hanseongbugi
2024. 6. 8. 15:30
https://school.programmers.co.kr/learn/courses/30/lessons/133499
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제에 주어진 배열 속 문자열 중 4가지 경우에 해당하면 말할 수 있는 단어로 판단해야한다.
이때 같은 단어가 2번 연속으로 나오면 안된다. 또한 말할 수 있는 단어 이후에 이상한 단어가 나오면 말할 수 없는 단어로 판단한다.
이를 위해 처음 문자열에서 단어를 기준으로 문자열을 잘라 배열에 삽입하였다.
이후 배열을 순회하며 같은 단어가 연속으로 나오는지 판단한다.
또한 말할 수 있는 단어가 있다면 말할 수 있는 단어 수를 증가시킨다.
#include <string>
#include <vector>
using namespace std;
bool babblingTest(string str){
if(str == "aya" || str == "ye" || str == "woo" || str == "ma")
return true;
else
return false;
}
int solution(vector<string> babbling) {
int answer = 0;
for(int i = 0;i<babbling.size();i++){
string word = babbling[i];
string temp = "";
vector<string> words;
for(int j = 0;j<word.length();j++){
temp += word[j];
if(babblingTest(temp)){
words.push_back(temp);
temp = "";
}
}
if(!temp.empty())
words.push_back(temp);
string before = "";
bool isSpeak = false;
for(int j = 0;j<words.size();j++){
if(babblingTest(words[j])){
if(!before.empty() && words[j] == before){
isSpeak = false;
break;
}
isSpeak = true;
before = words[j];
}
else{
isSpeak = false;
break;
}
}
if(isSpeak)
answer++;
}
return answer;
}