본문 바로가기
Algorithm

[Programmers] 133499.ts 옹알이 (2)

by roses16 2023. 7. 14.

아래와 같이 해결.

 

function solution(babbling: string[]): number {
  let answer: number = 0;

  for (let str of babbling) {
    if (str.match(/aya(aya)+|ye(ye)+|ma(ma)+|woo(woo)+/g)) continue;
    if (!str.replace(/aya|ye|woo|ma/g, "")) answer++;
  }
  return answer;
}

 

어렵지 않게 푼 문제이나 다른 사람의 풀이에서 아래와 같은 정규표현식 사용을 확인해서 포스트를 남긴다.

 

function solution(babbling) {
  const regexp1 = /(aya|ye|woo|ma)\1+/;
  const regexp2 = /^(aya|ye|woo|ma)+$/;

  return babbling.reduce((ans, word) => (
    !regexp1.test(word) && regexp2.test(word) ? ++ans : ans
  ), 0);
}

 

여기서 궁금했던건 regexp1 사용이었는데 \1 은 첫번째 그룹화된 문자열을 의미한다. 즉, 그룹화된 (aya, ye, woo, ma) 중 캡처된 값을 의미하고 뒤에 수량자 + 를 붙여 반복을 체크했다.


🙏 참조