c_sm 2023. 5. 4. 15:57

문제 설명

머쓱이는 태어난지 6개월 된 조카를 돌보고 있습니다.

조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다.

문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

1 <= babbling 의 길이 <= 100

1 <= babbling[i]의 길이 <= 15

babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장.

  -즉 각 문자열의 가능한 모든 부분 문자열 중 "aya", "ye", "woo", "ma"가 한번씩만 등장합니다.

문자열은 알파벳 소문자로만 이루어져있다.

 

입출력 예

babbling result
["aya", "yee", "u", "maa", "wyeoo"] 1
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3

 

입출력 예 #1 설명

["aya", "yee", "u", "maa", "wyeoo"]에서 발음할 수 있는 것은 "aya"뿐입니다. 따라서 1을 return합니다.

 

입출력 예 #2 설명

["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]에서 발음할 수 있는 것은 "aya" + "ye" = "ayaye", "ye", "ye" + "ma" + "woo" = "yemawoo"로 3개입니다. 따라서 3을 return합니다.

 

유의사항

가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.

 

 

 

나는 처음에 어떻게 해야할 지 고민하다가 문자열에 해당하는 문자가 있는것을 확인할 수 있는 함수가 있나 검색하다가 includes()를 발견해서 조건문에 사용했다. 그리고 문자열안에 원하는 문자만 변경이 가능한 것을 찾다가 replace()라는 함수도 찾아서 사용했다.

 

만약 문자열 내에 해당 문자가 있으면 replace로 값을 변경해서 넣어주고 나서 변경한 1이 있으면 그값을 없애고 다시 넣어줘서, 해당 문자열의 크기가 0이면 answer의 값을 올려 체크해주었다.

 

 

내 코드

function solution(babbling) {
    var answer = 0;
    let b=['aya','ye','woo','ma'], str='';
    
    for(let n = 0; n < babbling.length; n++){
        
        str = babbling[n];
        
        for(let j = 0; j < b.length; j++){
            
            if(str.includes(b[j])){
                
                str = str.replace(b[j],1);
            }
        }
        
        str = str.replace(/1/g,'');
        if(str.length == 0) answer++;
    }
    return answer;
}

 

 

이렇게 풀어보니 다양한 함수들이 있는것을 알았고, 필요에 따라 사용하면 좋을 거 같다.