프로그래머스 (JS)/Lv. 1

[Programmers / JS] 133499번 - 옹알이(2)

hodo- 2023. 3. 27. 23:38

Problem

문제 보기


머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.


Solution

문제분석
조카 가능 발음 : "aya", "ye", "woo", "ma"
한 발음을 한 문장에 여러번 발음할 수 있으나 연속해서 같은 발음은 안 됨
return 발음할 수 있는 단어의 개수

문제풀이
1. 조카가 가능한 발음을 배열로 변수에 넣는다 (speaking)
2. 문자열 배열에서 한 요소씩 가져올 수 있도록 만들어준다.
3. 만약 연속된 speaking 요소가 나온다면 그것은 발음할 수 없는 단어이다
4. speaking의 요소당 각 1번씩이 아닌 여러번 사용할 수 있으므로 split을 이용해서 문장에 해당하는 요소를 ""처리해준다. 그 뒤에 다시 문자열로 만들어줘야하는데 join(" ")으로 하게 되면 단어들이 다시 붙어서 새로운 단어가 되므로 join("   ") 띄어쓰기를 해주도록 한다
5. 위의 요소가 0이라면 발음할 수 있는 문장이므로 count++한다
6. 마지막에 count를 return 한다
function solution(babbling) {
    const speaking = ["aya", "ye", "woo", "ma"];
    let count = 0;
    
    for(let i = 0; i < babbling.length; i++){
        let answer = babbling[i]
        
        for(let j = 0; j < speaking.length; j++){
            if (answer.includes(speaking[j].repeat(2))) break;
            answer = answer.split(speaking[j]).join(" ");
        }
        if(answer.split(" ").join("").length === 0) count++;
    }
    return count;
}