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

[Programmers / JS] 120956번 - 옹알이

hodo- 2023. 3. 12. 14:24

Problem

문제 보기

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


Solution

function solution(babbling) {
    const x = ["aya", "ye", "woo", "ma"];
    let result = 0; 
    
    for (i of babbling){
        for(j of x){
            let text = String(i).replace(j, '1');
            i = text;
        }
        let re = i.replaceAll(1, '')
        if (re === '') result++;
    }
    
    return result;   
}

1. babbling 각 요소 i로 하나씩 불러오기
2. x (조카가 가능한 네가지 발음)의 각 요소 j로 하나씩 불러오기
3. replace를 사용하기 위해 문자열로 i 만들어주고 조카가 말한 단어(i)에 j가 포함된다면 1로 바꿔줌
- i는 각각 최대 1번씩만 발음하기 때문에 replaceAll이 아닌 replace로 처음에 발견한 하나만 바꿔주면 됨!
- 처음에 replace(j, '')으로 해줬는데 "wyeoo"의 경우 처음에 "ye"가 공백처리 되면 "woo"가 되므로 이것도 발음할 수 있는 단어의 개수로 되어버린다..그러므로 숫자로 바꿔줌!
4. i에 포함된 모든 숫자 1을 공백으로 처리!
5. 공백이라면 result + 1 ! (발음할 수 있는 조합으로만 되어있다면 1로만 구성되어있으므로 공백이된다)