[프로그래머스 Lv1] 옹알이 (2) - (Javascript)

eeeyooon·2024년 1월 9일
0

옹알이 (2)

문제 링크

📩 문제 설명

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

제한 사항

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 30
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

입출력 예제

babblingresult
["aya", "yee", "u", "maa"]1
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"]2

제출 답안

function solution(babbling) {
    let answer = 0;
    const words = ["aya", "ye", "woo", "ma"];
    
    for (let i=0; i<babbling.length; i++) {
        let bab = babbling[i];
        
        for (let j=0; j<words.length; j++) {
            if (bab.includes(words[j].repeat(2))) break;
            bab = bab.split(words[j]).join(" ");
        }
        
        if (bab.split(" ").join("").length === 0) {
            answer++;
        }
    }
    return answer;
}

답안 설명

발음할 수 있는 단어의 개수 answer를 0으로 초기화시키고, 조카가 발음할 수 있는 기본단어들을 words에 할당하였다. 그리고 babbling을 순회를 돌면서 각 단어를 bab에 할당하였고, 그 단어가 만약 연속된 기본단어 2개가 포함되었다면 반복문을 빠져나가게하였다. 그리고 현재 기본단어를 공백으로 바꿔주고, 다시 그 공백들을 제거했을 때 bab 문자열의 길이가 0이라면 bab이 기본 단어들의 조합이라는 뜻이므로, answer 카운트를 추가한다.


다른 사람의 풀이

function solution(babbling) {
  let answer = 0;

  babbling.forEach((word) => {
    word = word.replaceAll("ayaaya", "*");
    word = word.replaceAll("yeye", "*");
    word = word.replaceAll("woowoo", "*");
    word = word.replaceAll("mama", "*");

    word = word.replaceAll("aya", " ");
    word = word.replaceAll("ye", " ");
    word = word.replaceAll("woo", " ");
    word = word.replaceAll("ma", " ");

    if (word.replaceAll(" ", "").length === 0) answer++;
  });

  return answer;
}

창의성 대박



0개의 댓글