https://school.programmers.co.kr/learn/courses/30/lessons/133499
문제에 주어진 배열 속 문자열 중 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;
}
'Programmers Review' 카테고리의 다른 글
[Lv 1] 기사단원의 무기 (0) | 2024.06.08 |
---|---|
[Lv 1] 햄버거 만들기 (0) | 2024.06.08 |
[Lv 1] 콜라 문제 (0) | 2024.06.07 |
[Lv 1] 로또의 최고 순위와 최저 순위 (0) | 2024.06.07 |
[Lv 1] 숫자 문자열과 영단어 (0) | 2024.06.07 |