PS/Programmers

Programmers / Level 1 / 옹알이 (2) / JS

KimMinJun 2022. 11. 25. 23:07

< 문제 바로가기 >

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

function isPossible(babbling) {
  // 가능한 발음 리스트
  const possibleList = ['aya', 'ye', 'woo', 'ma'];

  // 가능한 발음 리스트에 있는 발음이라면 해당 인덱스로 바꿔줌
  possibleList.forEach((el, idx) => {
    babbling = babbling.replaceAll(el, idx);
  });

  for (let i = 0; i < babbling.length; i += 1) {
    // 연속된 발음이라면 false
    if (babbling[i] === babbling[i + 1]) return false;
    // 숫자로 안바뀐 발음이 있다면 false
    if (isNaN(babbling[i])) return false;
  }

  return true;
}

function solution(babblingList) {
  let answer = 0;

  // true만 세어줌
  answer = babblingList.filter((babbling) => isPossible(babbling)).length;

  return answer;
}

2022.10.19 - [PS/Programmers] - Programmers / Level 0 / 옹알이 / JS

 

Programmers / Level 0 / 옹알이 / JS

문제 설명 머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발

jun-coding.tistory.com

위 문제는 옹알이(1) 문제이다.

얼핏 보기엔 거의 같은 문제이지만 조금 다르다.

 

옹알이(1) 에서는 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못한다.

하지만 옹알이(2) 에서는 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음이 가능하다.

 

따라서 최대 한 번이 아닌, 여러 번 할 수 있지만 제한사항인 연속해서 같은 발음을 할 수 없다.

 

그래서 가능한 발음 리스트를 먼저 선언해주고, input 값으로 들어온 문자열에 가능한 발음이 있으면 리스트에서 해당하는 발음의 인덱스로 바꿔준다.

 

그 후 만약 같은 숫자가 연속으로 온다면 연속해서 발음할 수 없으므로 불가능하고,

숫자 이외의 문자가 있다면 가능하지 않은 발음이므로 불가능하다.