머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling
이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
babbling
의 길이 ≤ 100babbling[i]
의 길이 ≤ 15babbling
의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.※ 공지 - 2022년 10월 27일 문제 지문이 리뉴얼되었습니다. 기존에 제출한 코드가 통과하지 못할 수도 있습니다.
function solution(babbling) {
const babyWord = ['aya', 'ye', 'woo', 'ma']
let result = babbling
for (let i = 0; i < babbling.length; i++) {
for (let j = 0; j < babyWord.length; j++) {
result[i] = result[i].replace(babyWord[j], ' ')
}
}
return result.filter((v) => !v.trim()).length
}
function solution(babbling) {
const word = ['aya', 'ye', 'woo', 'ma']
return babbling
.map((str) => {
for (const w of word) {
if (str.includes(w)) {
str = str.replace(w, ' ')
}
}
return str
})
.filter((str) => !str.trim()).length
}
테스트 17번을 계속 통과하지 못하고 있다가, 결국 이번에는 구글링해서 다른 사람 풀이를 어느 정도 참고해서 진행했다. 처음에는 한 번 등장한 단어의 수를 카운팅해서 1이상이면 0을 리턴하고 아닌 경우에만 조건을 만족하는 옹알이 단어의 수를 구했었다. 그런데 17번 테스트가 계속 통과가 안되서, 결국.. 참고했다. 그렇게 해서 처음에는 split를 이용했었는데, 이 경우 replace가 더 좋은 대안이라는 걸 알게되었다.