/ #프로그래머스

[1단계][133499] 옹알이(2)

문제

133499

풀이

정규식과 filter를 조합하여 발음가능한 단어를 걸러내고, 그 개수를 출력하면 됩니다.

function solution(babbling) {
    return babbling.filter(s=>{
        const arr = s.match(/(aya|ye|woo|ma)(?!\/\1)+/g);
        if(!arr || arr.join('') !== s) return false;
        for(let i = 0, length = arr.length; i < length; i++) {
            if(i && arr[i] === arr[i-1]) return false;
        }
        return true;
    }).length;
}

우선 단어 s에서 match를 통해 발음가능한 단어의 배열을 추출합니다. 해당 배열을 join을 통해 합쳤을 경우 처음 단어 s와 동일하다면 해당 단어는 발음가능한 단어로 구성됩니다. 그러므로 동일하지 않는 경우 false를 반환하여 걸러냅니다.

s와 동일하더라도 동일한 단어를 연속해서 발음하지 못하므로, for문을 통해 i와 i-1번째 단어를 비교하여 동일한 경우 false를 반환하여 걸러내도록 합니다.

해당 필터를 통과한 경우 true를 반환하여 배열에 넣어줍니다.

필터를 거친 배열에서 요소의 개수가 정답이 됩니다.

bob