머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
- ≤ babbling의 길이 ≤ 100
- 1 ≤ babbling[i]의 길이 ≤ 15
- babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
- 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
babbling result ["aya", "yee", "u", "maa", "wyeoo"] 1 ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3
function solution(babbling) {
var answer = 0;
const sayYes = [ "aya", "ye", "woo", "ma"]
babbling.forEach((str)=>{
let cnt = 0;
for(let i=0; i<4; i++){
if(str.includes(sayYes[i])) {
str = str.split(sayYes[i]).join(" ")
cnt ++;
}
}
if(!(str.length-cnt)) answer ++;
})
return answer;
}
조합이 가능하다면 발음할수 있는 단어를 지우다 보면 문자열의 길이가 0이 되지 않을까?
하는 생각에서 시작한 풀이이다.
str = str.split(sayYes[i]).join("")
처음 이렇게 띄어쓰기 없이 그냥 join 했는데
"wyeoo" 같은 경우 "ye"가 사라지면 join 후에 "woo"가 만들어져서 발음이 가능하도록 만들게 되어버렸다.
if(str.includes(sayYes[i])) {
str = str.split(sayYes[i]).join(" ")
cnt ++;
}
그래서 발음 가능한 단어를 제거한 횟수를 카운트 했고
단어를 지운 후 str의 총 길이에서 제거한 횟수를 뺀 값이 0일 때 answer을 증가 시켰다