프로그래머스 스킬트리 JavaScript
2023년 1월 6일
문제 풀이
매개변수 (skill, skill_trees)가 주어졌을 때,
skill_trees 의 원소(하나의 스킬트리)를 하나씩, 하나의 스킬트리에 있는 스킬을 하나씩 조회하는 방식으로 풀었다.
- 가능한 스킬트리(treeCheck = true):
- skill 에 없는 스킬들만으로 구성된 스킬트리일 때
- skill 에 있는 스킬들이 포함된 스킬트리일 때:
- skill 에 포함된 스킬은 skill 의 순서대로만 배울 수 있기에 현재 스킬이 skill 에 포함되었을 때 skillIdx를 통해 이전 스킬을 배웠는지 체크해 준다.
findIdx
: 스킬이 skill 에 있으면 해당 인덱스를, 없으면 -1을 리턴findIdx !== -1
이면서skill === findIdx-1 이 true
일 때 가능한 스킬트리가 된다.
solution.js
function solution(skill, skill_trees) {
let answer = 0;
const skillArr = [...skill];
skill_trees.forEach(item => {
const currentSkillTree = [...item];
let skillIdx = -1;
let treeCheck = true;
for (let i = 0; i < currentSkillTree.length; i++) {
const findIdx = skillArr.indexOf(currentSkillTree[i]);
if (findIdx !== -1) {
if (skillIdx === findIdx-1) {
skillIdx = findIdx;
}
else {
treeCheck = false;
break;
}
}
}
if (treeCheck) {
answer++;
}
});
return answer;
}