게임을 많이 해보면 알겠지만 선행 스킬이란게 있다. 선행스킬은 어떤 스킬을 배우기 전에 선행되어야될 스킬이다. 예를 들어 썬더를 배우려면 라이트닝볼트를 배워야되고 그 전에 또 스파크를 배워야 된다.
선행스킬이 아니라면 그 순서에 상관없이 중간에 배울수 있다.
예 : 스파크=> 힐링 => 라이트닝 볼트 => 썬더
함수 인자
skill : 스킬 순서로 된 배열
skill_trees : 유저들이 만든 스킬트리를 담은 배열
리턴 값 : skill_trees중에서 가능한 트리 갯수를 리턴하는 함수
skill | skill_trees | return |
---|---|---|
"CBD" | ["BACDE", "CBADF", "AECB", "BDA"] | 2 |
입출력 예 설명
function solution(skill, skill_trees) {
let result = 0;
let filteredTrees = skill_trees.map((ele) =>
ele.split('').filter((char) => skill.includes(char))
);//=> 처음 스킬트리에 skill 인자에 해당하지 않는 부분들을 필터링함
for (let i = 0; i < filteredTrees.length; i++) {//=> 그리고 skill 인덱스에 맞춘다
let isValid = true;
for (let j = 0; j < filteredTrees[i].length; j++) {
if (skill[j] !== filteredTrees[i][j]) {//맞지 않으면 false를 해버리고 break로 그 반복문을 부셔버림
isValid = false;
break;
}
}
if (isValid) { //반복문을 돌면서 ture인것들이 있으면 카운팅함
result++;
}
}
return result;
}
공부를 너무 안하니 반성을 해야겠다.