옹알이

Pien·2023년 7월 8일

문제 설명

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


제한사항
  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 15
  • babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
    • 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

입출력 예
babblingresult
["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"를 발음할 수 없기 때문에 할 수 없는 발음입니다.

나의 풀이

function solution(babbling) {
    var answer = 0;
    const shout = ["aya", "ye", "woo", "ma"]
    for(let i = 0; i < babbling.length; i++){
        let temp = "";
        let tempArray = [];
        for(let j = 0; j < babbling[i].length; j++){
            temp += babbling[i][j]
            if(temp.length >= 2 && temp.length <= 3){
                if(shout.includes(temp)){
                    tempArray.push(temp)
                    temp = ""
                }
            }
            if(temp.length >= 4) break;
        }
        if(tempArray.join("") === babbling[i]) answer++
    }
    return answer;
}
//배열을 순회 하며, 문자를 쌓아 나간다.
//문자 갯수가 2~4개 일 경우 includes를 사용해 있으면 중간 배열에 집어 넣는다.
//배열에 집어넣은값 join 과 원래 값을 비교해서 같을경우 result ++  아닐경우 다시 반복

배열을 순회하며 해당 인덱스의 문자를 쌓아 나간다.
문자 갯수가 2~3개 일경우 shout 배열에 일치하는 문자가 있을 경우 해당 문자를 임시 배열에 더해주고 문자를 초기화 시켜준다. 문자 쌓기가 끝나면 임시 배열의 값과 인덱스의 값을 비교해 일치할 경우 카운트를 누적 시켜주고 결과 값을 반환한다.

0개의 댓글