[프로그래머스 0단계 :JS] 옹알이(1) -작성일 기준 정답률 21%

안녕하세요 연하입니다~

오늘은 프로그래머스 Lv.0 옹알이(1) 통과 코드를 작성하러왔습니다.

0단계라서 쉬울줄 알고 도전했는데 생각보다 어려웠네요 ㅠㅠ.. 그래서 정답률이 21%인가봐요 ㅎㅎ

코드를 작성하기 위해 제한사항을 먼저 읽어보았는데 1,2 조건은 별로 중요해보이지않았고 3번과 4번이 가장 핵심적인 단서라고 생각해 이 조건을 유의하며 구현해보았습니다. 

 

1. "aya","ye","woo","ma"가 최대 한번씩만 등장하기때문에 babbling을 map을 이용해 한번씩 훑어 babbeling[i] 문자열이 조카가 발음할 수 있는  "aya","ye","woo","ma"를 포함하게되면 replace('문자열','')을 이용해 삭제해버리는 방식을 선택했습니다. 

문제 발생: 테스트 케이스 "wyeoo"에서 ye를 먼저 삭제하고 남은 문자열 woo역시 삭제되는 오류가 생기게됩니다. 조카는 이런 방식으로 발음할 수 없기때문에 잘못된 코드임을 깨닫고 추가적인 작업을 하게됩니다. 

 

2.replace('문자열','')이 아닌 replace('문자열',' ')으로 빈칸을 띄워준 뒤 (어떤 문자를 넣어주던 상관없습니다.)

"aya","ye","woo","ma"를 잘라내고 남은 문자열의 길이만큼 while문을 통해 반복해준 뒤 빈공간을 제거해 남은 문자가 없는 경우에만 +1해줘 완성하게되었습니다. 

 

제가 통과한 코드인데 뭔가 허접해보이네요 ㅎㅎ..

x=x.split('aya').join(' ');는 'aya'를 기준으로 자른 뒤 ' '로 이어준다는 뜻입니다. replace와 비슷한 의미로 사용할 수 있습니다.

function solution(babbling) {
    var answer = 0;
        babbling.map(x =>{
        	x=x.replace('aya',' ');
            x=x.replace('ye',' ');
            x=x.replace('woo',' ');
            x=x.replace('ma',' ');
            //x=x.split('aya').join(' ');
            //x=x.split('ye').join(' ');
            //x=x.split('woo').join(' ');
            //x=x.split('ma').join(' ');
            let y=x.length
            while(y){
                x=x.replace(' ','')
                y--;
            }
            if(x === ''){
                answer=answer+1;
            }      
        })
    return answer;
}