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
위 문제는 옹알이(1) 문제이다.
얼핏 보기엔 거의 같은 문제이지만 조금 다르다.
옹알이(1) 에서는 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못한다.
하지만 옹알이(2) 에서는 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음이 가능하다.
따라서 최대 한 번이 아닌, 여러 번 할 수 있지만 제한사항인 연속해서 같은 발음을 할 수 없다.
그래서 가능한 발음 리스트를 먼저 선언해주고, input 값으로 들어온 문자열에 가능한 발음이 있으면 리스트에서 해당하는 발음의 인덱스로 바꿔준다.
그 후 만약 같은 숫자가 연속으로 온다면 연속해서 발음할 수 없으므로 불가능하고,
숫자 이외의 문자가 있다면 가능하지 않은 발음이므로 불가능하다.
'PS > Programmers' 카테고리의 다른 글
Programmers / Level 2 / [1차] 뉴스 클러스터링 / JS (0) | 2022.12.10 |
---|---|
Programmers / Level 2 / [1차] 프렌즈4블록 / JS (0) | 2022.12.10 |
Programmers / Level 0 / 저주의 숫자 3 / JS (0) | 2022.10.26 |
Programmers / Level 0 / OX퀴즈 / JS (0) | 2022.10.26 |