본문 바로가기
코딩

[프로그래머스 입문] (JAVASCRIPT) 옹알이

by 흥뷰자 2023. 4. 17.

루프를 돌면서 단어길이를 비교해서 같은 단어가 있으면 slice해서 나머지 단어 다시 비교하고 정렬하고 

응 너무 복잡하다. 

찾아보니 답이 너무 간단했다. 

정답보기

 

직관적으로 일치하는부분을 지워나가서 ""공백이 될때 마다 answer ++; 해주면 되는 것. 

console.clear();
const babbling = ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"];

function solution(babbling) {
    console.log("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ")
    var answer = 0;
    const canSay = ["aya","ye","woo","ma"]; 
    for(let i in babbling){ // 주어진 단어 하나씩 검사
        
        let init = babbling[i];
 
        for(let j in canSay){
            if(init.includes(canSay[j])){
                init = init.replace(canSay[j], "X") //❗❗String을 리턴함. 단어가 빠져서 조건을 충족하지 못하도록 구분자
                console.log(canSay[j]+"포함");
                console.log(init);
            }else{
                console.log("미포함");
            }

        }
 
       if (init.replace(/x/gi,"") === ""){ //❗❗RegExp g전체, i 대소문자 구별없이 
            answer ++;
        }
   
    }
    console.log(answer);
    return answer;
}

replace APi 문서


    /**
     * Replaces text in a string, using a regular expression or search string.
     * @param searchValue A string or regular expression to search for.
     * @param replaceValue A string containing the text to replace. When the {@linkcode searchValue} is a `RegExp`, all matches are replaced if the `g` flag is set (or only those matches at the beginning, if the `y` flag is also present). Otherwise, only the first match of {@linkcode searchValue} is replaced.
     */
    replace(searchValue: string | RegExp, replaceValue: string): string;
 
더보기

다음날 다시 풀어보니 새롭다

 

function solution(babbling) {
   
    const can = ["aya", "ye", "woo", "ma"];
    let answer = 0;

 

    for(let word of babbling){
        let checkWord = word; // 단어를 복사
        for(let i in can){ //반복되는 경우는 1경우 뿐이니까 배열 수만큼만 체크하면 됨
            //while(can.length >=0)
            if(checkWord.includes(can[i])){ //같은 글자가 있는 부분을
                checkWord = checkWord.replace(can[i],"X");//대체해서 리턴되는 값을 받는다.
                console.log(checkWord);
            }
        }
        let isTheSame = checkWord.replaceAll("X","");//반복문이 배열수만큼 돌고 나왔을 때 표식자를 제거한다.
       
        console.log(isTheSame == "") //그 결과로 남은게 없으면
        if(isTheSame === ""){
            answer = answer + 1;//답을 하나 늘려준다
        }
        console.log(answer);
    }
    return answer;
}

댓글