Programmers - 스킬트리

SJ0000·2022년 5월 13일

문제 링크

skill tree에 있는 skill들을 하나씩 비교하면서 배울 수 있는 스킬인지 확인한다.

Dictionary를 이용해서 선행스킬 존재 유무 및 선행스킬 index를 확인하였다.

def solution(skill, skill_trees):

    skill_dict = dict()
    for (index, s) in enumerate(list(skill)):
        skill_dict[s] = index

    def is_possible(skill_tree):
        skills = list(skill_tree)
        learn_index = 0
        for x in skills:
            # base 1) skill tree에 포함되지 않는 경우
            if skill_dict.get(x) == None:
                continue
            # base 2) skill 배우기 불가능한 경우
            if learn_index < skill_dict[x]:
                return False
            # 순서상 맞는 skill을 배운 경우
            learn_index += 1
        return True

    answer = list(filter(is_possible, skill_trees))
    return len(answer)
profile
잘하고싶은사람

0개의 댓글