영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다.
문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
console.log(solution("bus")); // "bs"
console.log(solution("nice to meet you")); // "nc t mt y"
⛔ 오답
const solution = (my_string) => {
return my_string.split('').filter(el => el !== 'a' && el !== 'e' && el !== 'i' && el !== 'o' && el !== 'u').reduce((acc,cur) => acc + cur);
}
이때 연산 시간에 의해 런타임 오류가 발생했습니다.
다른 사람의 풀이를 참고하여 아래와 같은 문제점을 발견했습니다.
✔ 정답
이 두가지 문제를 아래와 같이 개선하였습니다.
const solution = (my_string) => {
const str = 'aeiou';
return my_string.split('').filter(el => str.includes(el) === false).join('');
}
filter 조건식의 가독성
배열과 include를 사용하여 어떤 조건인지 추상화하였습니다.
불필요한 reduce 연산
acc와 cur을 파악할 필요없이, join으로 합칠 수 있었습니다.
🔺 향상된 퍼포먼스
하지만 조금 더 효율적인 방법으로 풀 수도 있었습니다.
다른 사람의 풀이를 확인하고
정규식을 통한 접근을 확인할 수 있었습니다.
const solution = (my_string) => my_string.replace(/[aeiou]/g,'');
'a' 'e' 'i' 'o' 'u' 를 뺀 나머지 문자열을 가지고 있으면 되므로
제외하는 정규식을 사용해 필터링 후 대체하면 됩니다.
💬 자기 피드백