본문 바로가기
알고리즘/CodeWars

[CodeWars] javascript - 7kyu - Vowel Count 문제풀이

by TLOWAC 2020. 5. 1.

Title

Vowel Count

Description

Return the number (count) of vowels in the given string.

We will consider a, e, i, o, and u as vowels for this Kata.

The input string will only consist of lower case letters and/or spaces.


How Can I Solved

문제 요구사항 정의

함수의 인자로 문자열이 주어진다.
문자열 중에서 모음의 갯수를 구해서 반환한다.
만약, 문자열에 모음이 없는 경우에는 0을 반환한다.

모음의 종류

a, e, o, u, i

문제 접근

문제를 푸는 방법에는 크게 2가지가 있다.

split() 메서드로 문자열을 나누고, in메서드를 활용하여 모음을 찾는 방법이 있다.
다른 하나는 정규표현식을 사용하여, 문자열에서 모음만을 뽑아내는 방법이 있다.

나는 정규표현식을 사용해서 문제를 풀었다.
정규표현식을 사용하면, 소스코드의 양과 복잡도가 많이 줄어들기 때문이다.

인자로 받은 문자열 중에서 모음만 찾기

인자로 받은 문자열 중에서 'a', 'e', 'o', 'u', 'i' 모음만을 뽑아낸다.

  str.match(/[a,e,u,o,i]/gi)

모음의 갯수 구하기

정규표현식과 match() 메서드를 사용하여, 모음을 구했다.

이후에 모음의 갯수를 구할때는, 메서드 체이님과 length 를 활용하여 길이를 구한다.

  str.match(/[a,e,u,o,i]/gi).length

인자로 받은 문자열에 모음이 없는 상황 처리하기

인자로 문자열이 주어진다.

하지만, 모든 문자열에 모음이 있다고 보장되지는 않는다.

이런 상황을 대비하기 위해서 삼항연산자를 이용한다.

match() 메서드는 일치하는 값이 없으면 null을 반환하기 때문에 이를 활용하면 된다.

match()의 결과값이 null인 경우 0을 반환 하며,
null이 아닌 경우에는 모음의 갯수를 구해서 반환 한다.

조건 : str.match(/[a,e,u,o,i]/gi) !==null
참 : str.match(/[a,e,u,o,i]/gi).length
거짓 : 0

  str.match(/[a,e,u,o,i]/gi) !== null >0 ?
  str.match(/[a,e,u,o,i]/gi).length :
  0


Solution

function getCount(str) {
  return str.match(/[a,e,u,o,i]/gi) !== null >0 ?
  str.match(/[a,e,u,o,i]/gi).length :
  0
}

댓글