[프로그래머스] 옹알이 (1)

butterbeetle·2023년 2월 3일
0

코딩테스트

목록 보기
61/132
post-thumbnail

문제설명

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

제한사항

  • ≤ 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

내 풀이

function solution(babbling) {
    var answer = 0;
    const sayYes = [ "aya", "ye", "woo", "ma"]
    babbling.forEach((str)=>{
        let cnt = 0;
        for(let i=0; i<4; i++){
            if(str.includes(sayYes[i])) {
                str = str.split(sayYes[i]).join(" ")
                cnt ++;
            }
        }
        if(!(str.length-cnt)) answer ++;
    })
    return answer;
}

조합이 가능하다면 발음할수 있는 단어를 지우다 보면 문자열의 길이가 0이 되지 않을까?
하는 생각에서 시작한 풀이이다.

str = str.split(sayYes[i]).join("")

처음 이렇게 띄어쓰기 없이 그냥 join 했는데

"wyeoo" 같은 경우 "ye"가 사라지면 join 후에 "woo"가 만들어져서 발음이 가능하도록 만들게 되어버렸다.

if(str.includes(sayYes[i])) {
  str = str.split(sayYes[i]).join(" ")
  cnt ++;
}

그래서 발음 가능한 단어를 제거한 횟수를 카운트 했고
단어를 지운 후 str의 총 길이에서 제거한 횟수를 뺀 값이 0일 때 answer을 증가 시켰다

profile
멍청이

0개의 댓글