프로그래머스 스킬트리 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;
}

댓글