본문 바로가기

Algorithm

Programmers - 스킬트리 / Javascript

function solution(skill, skill_trees) {
    let answers = 0;
    skill_trees.map(skillTree => {
        const skillArray = skill.split('');
        const skillTreeArray = skillTree.split('');
        let flag = true;
        for(let i = 0; i < skillTreeArray.length; i++){
        	//선행스킬트리에 포함된 스킬이 아니라면 continue
            if(!skillArray.includes(skillTreeArray[i])) continue;
            //선행스킬트리에 포함된 스킬이고 skillArray의 첫번째 스킬과 같으면 continue
            if(skillArray.shift() === skillTreeArray[i]) continue;
            //위 두 경우가 아니라면 선행스킬트리의 순서와 맞지 않으므로 flag를 false로 바꾼 후 시간절약을 위해 break
            flag = false;
            break;
        }
        if(flag) answers++;
    })
    return answers;
}