우선 옹알이 할 수 있는 글자들의 배열을 만들어준 뒤,
입력된 옹알이 (babbling)과 할 수 있는 글자(ava) // available이라는 뜻,,
를 각각 순회하며 해당되는 글자는 삭제시키고, 모두 삭제되면 카운트 하는 방식으로 만들어줬다.
function solution(babbling) {
const ava = ["aya", "ye", "woo", "ma"]
let count = 0;
babbling.forEach((b) => {
ava.forEach((a) => {
if (b.includes(a)) {
b = b.replace(a,'');
}
})
if (b.length === 0) {
count ++;
}
})
return count;
}
틀렸다.
연속되는 발음은 못한다는 부분을 빠트렸다..
추가..
indexOf 메소드를 사용해야겠다.
..
실패했다 ! 어떻게 써야할지 모르겠ㄷ ㅏ
찾아보니 문자열의 첫 글자를 확인할 수 있는 startwith라는 메소드가 있다. 이걸 사용..
function solution(babbling) {
const ava = ["aya", "ye", "woo", "ma"]
let count = 0;
babbling.forEach((b) => {
let pre = '';
while (b.length > 0) {
let found = false;
for (let a of ava) {
if (b.startsWith(a) && pre !== a) {
b = b.replace(a,'');
pre = a;
found = true;
break;
}
}
if (!found) {
return;
}
}
if (b.length === 0)
count ++;
})
return count;
}
중간에 계속 반복문을 멈추는 법이 익숙하지 않아서 헤맸다.
return 이나 break 사용해주기..
break & return
1 break
- for, while, forEach 에 사용
- 현재의 반복문만 종료시키고 그 이후 코드는 계속 실행됨.
2 return
- 함수의 실행을 종료, 반복문을 포함한 함수 자체가 종료됨.
return은 함수 자체를 종료시키기 때문에
내부 반복문만 종료하고 싶을 땐 break를 사용, 외부 반복문을 종료하고 싶으면 return 사용
최종 코드
function solution(babbling) {
const ava = ["aya", "ye", "woo", "ma"]
let count = 0;
babbling.forEach((b) => {
let pre = '';
while (b.length > 0) {
let found = false;
for (let a of ava) {
if (b.startsWith(a) && pre !== a) {
b = b.replace(a,'');
pre = a;
found = true;
break;
}
}
if (!found) {
break;
}
}
if (b.length === 0)
count ++;
})
return count;
}
다른 사람 풀이
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);
}
멋지고... 무슨 말인지 못알아듣겠다 호호..
공부 열심히 해야지
'코딩 테스트 > test_javaScript' 카테고리의 다른 글
[코딩테스트/javaScript] 로또의 최고 순위와 최저 순위 (1) | 2025.01.19 |
---|---|
[코딩테스트/javaScript] 기사단원의 무기 (0) | 2025.01.18 |
[코딩테스트/javaScript] 덧칠하기 (0) | 2025.01.17 |
[코딩테스트/javaScript] 모의고사 (1) | 2025.01.16 |
[코딩테스트/javaScript] 과일 장수 (0) | 2025.01.15 |