TIL-20230530

민태영·2023년 5월 30일
0

문제) 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

1) 내가 시도한 방법

"aya", "ye", "woo", "ma"의 모든 1에서 4까지의 경우의 수를 구하고 매개변수인 babbling배열의 요소들을 비교하여 카운터를 세려고 했다. 하지만 많은 for문이 중첩으로 들어가 굉장히 비효율적이었으며 만약 위의 4가지가 아닌 더 많은 단어를 배열로 받게되면 그때 마다 코드를 수정해야했기에 머리를 싸매다가 도저히 안풀려서 다른 사람들의 코드를 보기로 했다.

2. 다른 사람의 풀이

function solution(ㅊ) {
    var answer = 0;
    var possibleWord=["aya", "ye", "woo", "ma"];
	// 매개변수 babbling을 for문으로 돌려 요소를 하나씩 대조
    for(var idx1 = 0; idx1 < babbling.length; idx1++) {
        
//         ayaye
        for(var idx2 = 0; idx2 < possibleWord.length; idx2++) {
            // yemawoo babbling배열의 문자열안에 possibleWord의 문자열이 포함되는지 확인
//             ayaye.includes(aya) <- ye woo ma 
			포함이 되면 
            if(babbling[idx1].includes(possibleWord[idx2])) {
//              babbling배열의 요소안에 해당하는 possibleWord의 문자열 자리에 x를 넣는다.
                babbling[idx1] = babbling[idx1].replace(possibleWord[idx2], "x");
                // console.log(babbling[i])
            }
        }
        // x로만 이루어진 string 검사 babbling의 배열안에 있는 단어가 아기의 언어조합과 완전히 맞아 떨어진다면
        var regex = /^[x]*$/;
        // console.log(regex)
        
        if(regex.test(babbling[i])) {
//           babbling[i]로만 이루어져 있다면 answer를 올린다.
            answer++;
        }
    }
    
    return answer;
    

}
profile
꿈을 꾸는 개발자

0개의 댓글