
function solution(skill, skill_trees) {
var answer = skill_trees.length;
var obj={};
skill.split('').map((el,index)=>{
obj[el]=index+1;
})
for(var i=0; i<skill_trees.length;
i++){
var ima= skill_trees[i].split('');
ima.unshift(0);
var copy__0=0;
var hey=Array.from({length:ima.length},()=>0);
for(var ii=1; ii<ima.length; ii++){
if(skill.includes(ima[ii])){
if(hey[ii-1]==obj[ima[ii]]-1){
hey[ii]=obj[ima[ii]];
copy__0=obj[ima[ii]];
continue;
}
else{
answer-=1;
break;
}
}
hey[ii]=copy__0;
}
}
//console.log(answer)
return answer;
}
내 코드는 너무 길고 별로다
function solution(skill, skill_trees) {
function isCorrect(n) {
// const test = '[' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('').filter(v => !skill.includes(v)).join('') + ']*';
let test = skill.split('');
for (var i = 0; i < n.length; i++) {
if (!skill.includes(n[i])) continue;
if (n[i] === test.shift()) continue;
return false;
}
return true;
}
return skill_trees.filter(isCorrect).length;
}
정규식
new RegExp(
[^${skill}], 'g'); skill 은 변수로 해당하는 값을 'g' == global
전체 돌아가면서 해당하는 글자를 찾으라는 것이다.
"CBD"
["BACDE", "CBADF", "AECB", "BDA"]
["BCD" ,"CBD","CB","B"]
이런식으로 나온다.