スキルツリー

5920 ワード

スキルツリー


https://programmers.co.kr/learn/courses/30/lessons/49993

問題を解く

function solution(skill, skill_trees) {
    const skillSet = new Map()
    let answer = 0;
    for(let i=0;i<skill.length;i++){
        skillSet.set(skill[i],i+1)
    }
    skill_trees.forEach(tree => {
        if(checkTree(skillSet,tree)){
            answer++
        } 
    })
    
    return answer;
}

function checkTree(map,tree){
    let first = 0
    for(let i=0;i<tree.length;i++){
        if(map.get(tree[i])){
            if(map.get(tree[i])>first+1 || first>map.get(tree[i])){
                return false
            }else{
                first = map.get(tree[i])
            }
        }
    }
    return true
}
スキル名と順序は,Mapを用いてキー,値として格納し,スキルツリーとMap順序を比較した.スキルツリーの順序をスキップし、スキルを学習したり、前のスキルより速いスキルを学習したりした場合、falseを返します.