Q. 입력받은 string에서 vowels(모음 - a, e, i, o, u)가 몇 개인지 찾아내라.
--- Examples
vowels('Hi There!') --> 3
vowels('Why do you ask?') --> 4
vowels('Why?') --> 0
Code
😢 vowels를 손쉽게 찾도록 도와줄 includes, match를 활용하는 것이 익숙하지 않았다.
😊 Solution 1)
checker array에 모음(a, e, i, o, u)를 미리 저장해두고, for ... of loop안에서 checker.includes()를 이용해 모음이 있다면 count를 증가시키면서 모음의 개수를 찾아냈다. for ... of는 여러모로 참 유용하다.
Solution 2)
match helper method안에 RegExp를 삽입하여 매우 간단하게 모음을 찾아냈다.
입력받은 str에 match를 사용해주면, 만약 원하는 값이 match됐을 때, 그 값이 반환된다.
여기서 중요한 것은 RegExp에서 g를 넣어줘야 global로 끝까지 검색을 하여 match된 모든 값의 배열을 반환해주며, i를 넣어줘야 대소문자 구분없이 match를 확인해준다.
✔ Array.prototype.includes()
Array에 있는 값들 중에 includes()괄호 안에 넣어준 값을 포함하고 있나? 확인해준다.
✔ String.prototype.match()
String(문자열)에 있는 character중에 match(RegExp)괄호 안에 있는 RegExp의 조건과 매치되는 값이 있나? 확인해준다.
✔ /[aeiou]/gi
[a, e, i, o, u]중에 하나라도 있으면 체크된다.
g는 global search(한 번 매치되고 끝나지 않고, 끝까지 체크한다)
i는 case-insensitive search 대소문자 구분없이 같은 알파벳이라면 동일하게 체크된다.
Full Code
function vowels(str) { |
const matches = str.match(/[aeiou]/gi); |
return matches ? matches.length : 0; |
} |
// function vowels(str) { |
// let count = 0; |
// const checker = ['a', 'e', 'i', 'o', 'u']; |
// for (let char of str.toLowerCase()) { |
// if (checker.includes(char)) { |
// count++; |
// } |
// } |
// return count; |
// } |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
Fibonacci(피보나치 수열) Node.js(JavaScript) (0) | 2020.01.01 |
---|---|
Spiral Matrix(나선형 행렬 - 달팽이) Node.js(JavaScript) (0) | 2020.01.01 |
Pyramid(피라미드 출력하기) Node.js(JavaScript) (0) | 2019.12.31 |
백준 11654번: 아스키 코드(ASCII Code) Node.js(JavaScript) (0) | 2019.12.31 |
백준 1152번: 단어의 개수(The number of words) Node.js(JavaScript) (0) | 2019.12.31 |