문제 설명
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 15
babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
문자열은 알파벳 소문자로만 이루어져 있습니다.
이 문제를 풀기 위해 js의 replace()
그리고 trim()에 대해 알 필요가 있다
replace는 문자열에서 원하는 단어를 내가 원하는 단어로 교체할 수 있다.
const p = 'Did mango exercise today?';
console.log(p.replace('mango', 'cutemango'));
// Expected output: "Did cutemango exercise today?"
그리고 trim()은 문자열 양 끝 공백을 지워준다.
const greeting = ' Hello mango! ';
console.log(greeting);
// Expected output: " Hello mango! ";
console.log(greeting.trim(''));
// Expected output: "Hello mango!";
이걸 이용해서 babbling 안의 요소들을 검사할건데, aya, ye, woo, ma를 제거해나가고, 다 제거하고 공백인 요소들만 남는다면 내가 정한 변수에 +1을 해줄것이다!
function solution(babbling) {
let answer = 0
for(let i = 0 ; i<babbling.length; i++){
if(babbling[i].replace('aya','').replace('ye','').replace('woo','').replace('ma','').trim() === ''){
answer ++
}
}
return answer;
}
처음에는 이렇게 답을 적었는데, 코드 실행을 눌렀을 때 틀린 예제가 있어서
다시 살펴보니,
예를 들어 'wyeoo' 같은 단어가 있다고 하면,
'wyeoo'에서 'ye'를 공백으로 치환한다면 나머지 'woo'가 붙어서 단어가 생성되게 된다.
그래서 replace함수에 대신 치환되는 부분에 공백을 추가하고, 나중에 trim()으로 없애는 방식으로 다시 설정했다!
function solution(babbling) {
let answer = 0
for(let i = 0 ; i<babbling.length; i++){
if(babbling[i].replace('aya',' ').replace('ye',' ').replace('woo',' ').replace('ma',' ').trim() === ''){
answer ++
}
}
return answer;
}