[프로그래머스/Lv.0] 옹알이(1)

Lainlnya·2023년 1월 4일
0

프로그래머스

목록 보기
1/49
post-thumbnail

문제

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 15
  • babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
    - 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

입출력 예

문제 풀이

function solution(babbling) {
  let answer = 0;

  for (let i = 0; i < babbling.length; i++) {
    if (/^(aya|ye|woo|ma)+$/g.test(babbling[i])) {
      answer++;
    }
  }
  return answer;
}

console.log(solution(['aya', 'yee', 'u', 'maa', 'wyeoo'])); // 1
console.log(solution(['ayaye', 'uuuma', 'ye', 'yemawoo', 'ayaa'])); //2

정규식을 활용하여 문제를 풀었는데, 간단하게 설명하자면 ^는 시작점을, |는 or을,+는 최소 한 개, 여러개를, $는 끝을 의미한다.
즉 aya나 ye, woo, ma로 시작하고, 앞의 문자들이 최소 한 개 또는 여러 개가 있으며 앞의 것들로 끝나는 것인지 테스트하는 것이다.
/뒤는 여러가지 옵션을 적을 수 있는데, g의 경우 global으로 원래 정규식의 경우 일회성이지만, /g를 사용하며 문자열의 모든 패턴을 검색할 수 있도록 했다.

문제를 마치며

정규식에 대해서는 알아놓으면 사용할 수 있는 곳이 많아서 전체적으로 한 번 정리해보면 좋을 것 같다는 생각이 들었던 문제였다.

profile
Growing up

0개의 댓글