머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(babbling) {
let answer = 0;
for (let i = 0; i < babbling.length; i++) {
if (/^(aya|ye|woo|ma)+$/g.test(babbling[i])) {
answer++;
}
}
return answer;
}
console.log(solution(['aya', 'yee', 'u', 'maa', 'wyeoo'])); // 1
console.log(solution(['ayaye', 'uuuma', 'ye', 'yemawoo', 'ayaa'])); //2
정규식을 활용하여 문제를 풀었는데, 간단하게 설명하자면 ^는 시작점을, |는 or을,+는 최소 한 개, 여러개를, $는 끝을 의미한다.
즉 aya나 ye, woo, ma로 시작하고, 앞의 문자들이 최소 한 개 또는 여러 개가 있으며 앞의 것들로 끝나는 것인지 테스트하는 것이다.
/뒤는 여러가지 옵션을 적을 수 있는데, g의 경우 global으로 원래 정규식의 경우 일회성이지만, /g를 사용하며 문자열의 모든 패턴을 검색할 수 있도록 했다.
정규식에 대해서는 알아놓으면 사용할 수 있는 곳이 많아서 전체적으로 한 번 정리해보면 좋을 것 같다는 생각이 들었던 문제였다.