아래와 같이 해결.
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) 중 캡처된 값을 의미하고 뒤에 수량자 + 를 붙여 반복을 체크했다.
🙏 참조
'Algorithm' 카테고리의 다른 글
[Programmers] 120911.ts 문자열 정렬하기 (2) (0) | 2023.07.14 |
---|---|
[Programmers] 131128.py 숫자 짝꿍 (0) | 2023.07.11 |
[Programmers] 12973.py 짝지어 제거하기 (0) | 2023.07.06 |
[Programmers] 136798.py 기사단원의 무기 (0) | 2023.07.03 |
[Programmers] 12985.py 예상 대진표 (0) | 2023.07.02 |