function solution(babbling) {
var answer = 0;
let limit = ['aya','ye','woo','ma']
babbling.forEach((babble) => {
let target = babble;
let temp = '';
for(let i = 0; i <babble.length; i++){ // validate
temp += babble[i]
if(limit.includes(temp)){
if(temp === babble.slice(i + 1, i + temp.length + 1)){
return false
}else {
temp = ''
}
}
}
for(let i = 0; i < limit.length; i++) { //replaceAll
if(target.includes(limit[i])){
target = target.replaceAll(limit[i],'*')
}
}
target = target.replace(/\*/gi,'');
if(!target){
answer++
}
})
return answer;
}
풀이
기존 옹알이(1)에 한가지 제한사항이 붙은 기출변형문제입니다.
1번째 for문이 제한사항을 해결하는 구문입니다.
먼저 temp 변수에 글자를 하나씩 더합니다.
temp 변수에 담은 문자열이 limit의 요소에 존재하는지 확인합니다.
예를 들어 ayawoowooaya가 입력되었을 때에는 aya와 woo를 검사하고, 두 문자열이 서로 같지 않기 때문에 temp를 비운뒤 index3인 w부터 temp를 쌓아올리다가 woo가 완성되는 순간 2번째 woo와 비교하여 일치를 확인한 뒤에 for loop을 탈출합니다.
첫번째 for문 덕분에 2번째 for문에서 replaceAll 메서드를 사용할 수 있습니다.