function solution(skill, skill_trees) {
var answer = 0;
// skill들의 유무를 파악하기 위한 객체
let obj = {};
let arr1 = skill.split("").map((e,idx)=> {
obj[e] = idx+1;
return idx+1;
});
// 각 원소까지의 합을 가짐
let arr2 = [];
// 모두 방문했는지 확인하기 위한 배열
let arr3 = [];
arr1.forEach((e,idx)=>{
if(idx===0){
arr2.push(e);
}
else {
arr2.push(e+arr2[idx-1]);
}
arr3.push(false);
});
// arr3 배열 복사
let origin = arr3.slice();
//console.log(arr1,arr2,arr3,origin)
//console.log(obj)
skill_trees.forEach((skill_tree)=>{
let target = 0;
let check = false;
// 각 스킬 트리를 순회
let test = skill_tree.split("");
console.log('-----------', arr3)
// 하나씩 돌면서
for(let k = 0 ; k < test.length ; k++){
// 각 character
let e = test[k];
// 해당 원소가 skill에 없다면 skip
if(!obj[e]) {
target++;
continue;
}
// 이전 상태가 true인지 확인
// 모두 true여야 함
let isRight = true;
arr3[obj[e]-1] = true;
for(let i = 0 ; i < obj[e]; i++){
if(!arr3[i]){
isRight = false;
}
}
check = isRight;
console.log(arr3,isRight, e)
if(!check){
break;
}
}
// 초기화
for(let i = 0; i < origin.length ; i++){
arr3[i] = origin[i];
}
if(check){
answer++;
}
if(target === skill_tree.length){
answer++;
}
});
return answer;
}
꼼꼼히 문제를 보고 작성해야 함
와... 스킬 트리에 없다는 것은 생각하지 못했던 부분
코드 작성 스타일을 가독성이 좋게 바꾸는 연습을 다시 해야할 듯