[프로그래머스] Lv.0 - 옹알이 (1)

·2023년 3월 20일
0

Programmers

목록 보기
1/30
post-thumbnail

✨ 문제설명

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

🔥 제한사항

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

입출력 예


🌟 내 풀이

✅ 첫번째 풀이

function solution(babbling) {
  let answer = 0;
  
  for (let i = 0; i < babbling.length; i++) {
  
  	// 1. 배열 안의 값이 'aya', 'ye', 'woo', 'ma' 인 경우 '-'로 바꾼다.
    babbling[i] = babbling[i].replace('aya', '-');
    babbling[i] = babbling[i].replace('ye', '-');
    babbling[i] = babbling[i].replace('woo', '-');
    babbling[i] = babbling[i].replace('ma', '-');
    
    // 2. "-" 값을 모두 ""로 바꾼다.
    babbling[i] = babbling[i].replaceAll('-', '');
    
    // 3. 배열 안의 값이 비어있을 경우 값을 증가시킨다.
    if (babbling[i] === '') {
      answer++;
    }
  }
  return answer;
}

❗️ replace 시 처음부터 빈값으로 바꾸지 않은 이유
wyeoo 가 들어왔다고 생각해보면 편하다.

babbling[i] = babbling[i].replace('ye', ''); // 'woo'
babbling[i] = babbling[i].replace('woo', ''); // ''

발음할 수 없는 단어임에도 불구하고 answer 값이 증가하게 된다.


✅ 두번째 풀이

function solution(babbling) {
  let answer = 0;
  for (let i = 0; i < babbling.length; i++) {
    babbling[i] = babbling[i].replace(/aya|ye|woo|ma/g, '');
    if (babbling[i] === '') {
      answer++;
    }
  }
  return answer;
}

첫번째 풀이에서 같은 코드가 반복되는 느낌이라 정규표현식을 사용해 보았다.
여기서 g는 조건에 있는 문자열 전체를 탐색함을 뜻한다.

❓ 만일 g를 붙이지 않는다면
'ayaye'는 발음이 가능함에도 불구하고, 'aya'만 ''으로 변경되어 ye가 그대로 존재해 answer 값을 증가시키지 못한다.

profile
🎨

0개의 댓글