[プログラマー/python]第2級スキルツリー



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

アルゴリズム分類

  • 文字列
  • 問題を解く


    スキルツリーの場合,check可能性関数を数量に応じて使用可能か否かを判断する.
    この関数の論理は次のとおりです.
    ex) 1. BACDEではBはskillに属しますが、Cは出る順番で、Bは先に出てfalseに戻ります.
    2.CBADEでは、Cはskillに属し、Cは出現する順序であるため、indexを追加して行う.
    Bもskillに属し、Bが出る順番なので行います.
    Aの場合はskillではないので次の...
    そんなにうまくいけばtrueに戻ります.
    3.Aprovieの場合もtrueです.

    ソースコード

    def solution(skill, skill_trees):
        def check_possible(tree):
            index=0
            for i in tree:
                if i in skill:
                    if i==skill[index]:
                        index+=1
                    else:
                        return False
            return True
    
        cnt=0
        for tree in skill_trees:
            if check_possible(tree):
                cnt+=1
            
        return (cnt)