프로그래머스 Lv.1 : 옹알이 (2)

zeroequaltwo·2022년 12월 2일
0

코딩테스트

목록 보기
63/69

문제

프로그래머스 문제

내 풀이

  • 이것도 처음에 똑바로 풀었다고 생각했는데 자꾸 몇 개 테스트 케이스를 못 통과해서 힘들었다.
  • 알고보니 테스트 케이스가 "mayaa"일 때 맨 처음에 "aya" -> ""로 대체해버리면 남은 글자가 "ma"가 되어버리면서 발음할 수 있는 경우가 되어버리는 거였다. 그래서 replace를 ""가 아니라 " "로 처리했다.
function solution(babbling) {
    const nephew = ["aya", "ye", "woo", "ma"];

    for(var i=0; i<4; i++){ 
        let regex = new RegExp(`${nephew[i]}`, "g");
        for(var j=0; j<babbling.length; j++){ 
            if(!babbling[j].includes(`${nephew[i]+nephew[i]}`)){
                babbling[j] = babbling[j].replace(regex," ");
            }
        }
    }
    
    return babbling.filter(r => r.replaceAll(" ","") === "").length;
}

개선점

  • 정규식 잘 쓰시는 분 거
  • regexp1은 두번 이상 같은 말이 반복되지 않는 조건으로, regexp2는 해당 단어들의 반복으로만 이루어졌다는 조건으로 썼다.
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);
}
profile
나로 인해 0=2가 성립한다.

0개의 댓글