우선 조카가 할 수 있는 말을 배열로 저장해둔다.
babbling을 forEach로 순회함.
각 원소 e는 임시 변수 t에 저장이 되고, 각 원소 e에 조카가 할 수 있는 단어가 있는지 includes로 판별.
있다면 t에서 말할 수 있는 단어는 'T'로 교체됨.
왜 T로 교체하냐면, t에서 T를 replace로 없애버렸을 때, t의 길이가 0이라면 조카가 할 수 있는 말이 1개 이상임을 의미하기 때문.
function solution(babbling) {
let peut=["aya", "ye", "woo", "ma"];
let ans=0;
babbling.forEach((e)=>{
let t=e;
for(let i in peut){
if(e.includes(peut[i])) {
t=t.replace(peut[i], 'T');
}
}
t=t.replace(/T/g, "");
t.length===0 ? ans+=1 : ans+=0;
});
return ans;
}
프로그래머스 코딩테스트 입문이라며... 0레벨이라며...
아이디어를 짜는 데에는 크게 안 걸렸는데, 문법 오류인지 아니면 내 이해 부족인지 때문에 한 40분은 넘게 씨름한 것 같다.
특히 let t=e로 설정하지 않고, 바로 e를 replace하려고 해서 많이 오류가 났다.
다른 사람 풀이
function solution(babbling) { var answer = 0; const regex = /^(aya|ye|woo|ma)+$/;
babbling.forEach(word => {
if (regex.test(word)) answer++;
})
return answer;
}
정규식 한 번 더 보고 가야겠다...
# 🐣 3. 개념
## 📌 String.prototype.match()
위 메서드는 문자열이 정규식과 매치 되는 부분을 검색한다. 문자열이 정규식과 일치하면, 일치하는 전체 문자열을 첫 번째 요소로 포함하는 Array를 반환한 다음, 괄호 안에 캡처된 결과가 나온다. 일치하는 것이 없으면 null
str.match(regexp)
## 📌 RegExp.prototype.test()
위 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고 그 여부를 true or false로 반환
```javascript
const str = 'table football';
const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');
console.log(regex.test(str));
// Expected output: true
console.log(globalRegex.lastIndex);
// Expected output: 0
console.log(globalRegex.test(str));
// Expected output: true
console.log(globalRegex.lastIndex);
// Expected output: 9
console.log(globalRegex.test(str));
// Expected output: false
나는 왜 이렇게 정규식이 어려울까...? 적재적소에 활용하려면 외우고 있어야 해서 그런가? 언젠간 외우긴 해야겠지...그치만 우선은 많이 접해놓고, 나중에 정규식을 활용할 수 있다는 것만 떠올려서 검색이 가능하게끔은 해놔야겠다.
const str = 'hello world!';
const result = /^hello/.test(str);
console.log(result); // true