머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
- 1 ≤
babbling
의 길이 ≤ 100 - 1 ≤
babbling[i]
의 길이 ≤ 15 babbling
의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.- 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
function solution(babbling) {
let numberOfWorld = 0;
for (let i = 0; i < babbling.length; i++) {
let world = babbling[i];
let canBePronounced = true;
while (world.length) {
if (["ye", "ma"].includes(world.slice(0, 2))) {
world = world.slice(2);
continue;
}
if (["aya", "woo"].includes(world.slice(0, 3))) {
world = world.slice(3);
continue;
}
canBePronounced = false;
break;
}
if (canBePronounced) numberOfWorld++;
}
return numberOfWorld;
}
- 발음할 수 있는 단어의 개수를 초기화한다.
babbling
의 각 단어를 순회하며 발음할 수 있는지의 여부를 조사한다. 이때 발음 가능 여부의 기본값은true
로 한다.- 단어의 길이가 0이 되면, 즉 발음할 수 있는 단어들로 나누어떨어졌다면 그대로 조사를 끝낸다.
- 단어의 길이가 0 이상이라면 먼저 앞 두 글자를 따온다. 이 글자가 발음할 수 있는 두 자리 단어에 포함된다면 검사한 두 단어를 제거하고 다시 같은 조사를 반복한다.
- 만약 앞 두 자리를 발음할 수 없었다면 앞 세 자리를 따와 조사해본다. 이 글자가 발음할 수 있는 세 자리 단어에 포함된다면 검사한 세 자리 단어를 제거하고 다시 같은 조사를 반복한다.
- 이 중 어디에도 걸리지 않았다면 발음할 수 없는 단어이므로 발음 가능 여부를
false
로 바꾸고 조사를 멈춘다. - 한 단어에 대한 조사가 끝난 후, 만약 발음이 가능한 단어였다면 발음할 수 있는 단어의 개수에 1을 더한다.
babbling
안의 모든 단어에 대해 조사가 끝나면 발음할 수 있는 단어의 개수를 반환한다.