습관처럼

programmers [python] : 스킬트리 본문

Algorithms/programmers

programmers [python] : 스킬트리

dev.wookii 2019. 12. 19. 19:49

스킬트리 문제:

유저의 스킬트리중 가능하지 않은 스킬트리를 제외하고 가능한 스킬트리의 개수를 구하다

 

접근 방식:

유저의 스킬트리중 규칙에 해당되지 않는 스킬트리를 제외하고 규칙을 따라야 하는 스킬만을 추려서 순서를 확인한다. 다음 순서가 맞는지 확인.


나의 풀이

def solution(skill, skill_trees):
    answer = 0
    result=[]
    for idx,i in enumerate(skill_trees):
        result=[]
        for user_skill in i:	#유저의 스킬에서 지켜야할 스킬트리의 스킬을 가지고 있는 경우 파악
            if user_skill in skill:	
                result.append(skill.index(user_skill))		#가지고 있다면 오리지널 스킬순서 추가
        set(result)	#중복을 제거 
        cnt=0
        for i in range(len(result)):	#유저의 스킬트리와 스킬의 룰이 맞는 경우 파악
            if result[i]==i: cnt+=1
        if cnt==len(result): answer+=1	#전체 개수 파악
    return answer

1번의 스킬을 찍기 위해서는 0을 찍어야하고 2번이 스킬트리를 찍기 위해서는 0,1을 찍어야 합니다. 이러한 규칙을 통해서 규칙이 해당되는 스킬의 개수만큼 인덱스 순서 그대로 스킬이 찍혀야 합니다. 

 

규칙이 잘 이해가 안되시는 분은 출력을 해보시면 쉽게 이해하실수 있습니다.

 

funny algorithms~