머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(babbling) {
let answer = 0;
for (let i = 0; i < babbling.length; i++) {
// 1. 배열 안의 값이 'aya', 'ye', 'woo', 'ma' 인 경우 '-'로 바꾼다.
babbling[i] = babbling[i].replace('aya', '-');
babbling[i] = babbling[i].replace('ye', '-');
babbling[i] = babbling[i].replace('woo', '-');
babbling[i] = babbling[i].replace('ma', '-');
// 2. "-" 값을 모두 ""로 바꾼다.
babbling[i] = babbling[i].replaceAll('-', '');
// 3. 배열 안의 값이 비어있을 경우 값을 증가시킨다.
if (babbling[i] === '') {
answer++;
}
}
return answer;
}
❗️ replace 시 처음부터 빈값으로 바꾸지 않은 이유
wyeoo 가 들어왔다고 생각해보면 편하다.babbling[i] = babbling[i].replace('ye', ''); // 'woo' babbling[i] = babbling[i].replace('woo', ''); // ''
발음할 수 없는 단어임에도 불구하고 answer 값이 증가하게 된다.
function solution(babbling) {
let answer = 0;
for (let i = 0; i < babbling.length; i++) {
babbling[i] = babbling[i].replace(/aya|ye|woo|ma/g, '');
if (babbling[i] === '') {
answer++;
}
}
return answer;
}
첫번째 풀이에서 같은 코드가 반복되는 느낌이라 정규표현식을 사용해 보았다.
여기서 g는 조건에 있는 문자열 전체를 탐색함을 뜻한다.
❓ 만일 g를 붙이지 않는다면
'ayaye'는 발음이 가능함에도 불구하고, 'aya'만 ''으로 변경되어 ye가 그대로 존재해 answer 값을 증가시키지 못한다.