나의 풀이
미리 생각해둔 것
// 예외 처리
1. 같은 발음이 연속으로 있을 때 하지만 연속이 아니면 괜찮
2. 불가능한 발음이 포함되어있을 때 ex) "woowo"
풀이 순서
1. 연속으로 하는 옹알이가 있으면 제외시키기
2. 발음가능한 옹알이는 전부 공백으로 교체
3. 공백자체는 length가 0이기 때문에 모두 공백으로 교체되면 옹알이가 가능하고 하나라도 공백으로 교체되지 않으면 옹알이 불가능
function solution(babbling) {
let result = 0
const babblArr = ["aya", "ye", "woo", "ma"]
const babblingWithoutContinuity = babbling.filter((value) => {
return babblArr.every((babbl) => !value.includes(babbl.repeat(2)))
})
babblingWithoutContinuity.forEach((babbl) => {
const canBabbl = !babbl.replace(/aya|ye|woo|ma/g,"").length
if(canBabbl){
result += 1
}
})
return result
}
다른 사람 풀이
function solution(babbling) {
const regexp1 = /(aya|ye|woo|ma)\1+/;
const regexp2 = /^(aya|ye|woo|ma)+$/;
return babbling.reduce((ans, word) => (
!regexp1.test(word) && regexp2.test(word) ? ++ans : ans
), 0);
}
정규표현식을 더 공부해야겠다.
function solution(babbling) {
const babblables = ["aya", "ye", "woo", "ma"];
return babbling.reduce((possible, babbl, index) => {
for (let i = 0; i < babblables.length; i += 1) {
if (babbl.includes(babblables[i].repeat(2))) return possible;
}
for (let i = 0; i < babblables.length; i += 1) {
babbl = babbl.split(babblables[i]).join(' ').trim();
}
if (babbl) return possible;
return possible += 1;
}, 0)
}
시간복잡도가 O(n^2) 라는 단점이 있지만 정규표현식을 사용하지 않고 해결한 풀이다.
'알고리즘 > 프로그래머스 - JS' 카테고리의 다른 글
[프로그래머스 - JS,PYTHON] level.3 정수 삼각형 (0) | 2023.06.21 |
---|---|
[프로그래머스] level.1 기사단원의 무기 ❗️(약수) (0) | 2023.06.19 |
[프로그래머스 - JS] level.1 햄버거 만들기 ❗️실수 (0) | 2023.06.19 |
[프로그래머스 - JS] level.1 달리기 경주 ❗️ (0) | 2023.06.17 |
[프로그래머스-JS] level.2 택배 배달과 수거하기 ⭐️⭐️ (0) | 2023.06.16 |