본문 바로가기

프로그래머스 알고리즘 문제/Level 2

프로그래머스 Level 2 - 스킬트리

내 정답:

 

선행 스킬들을 제외한 다른 스킬들을 모두 제외시킨 스트링을 만든 후 남은 스킬들이 선행 스킬 트리를 그대로 따르는지를 테스트하는 방식으로 진행했다.

def solution(skill, skill_trees):
    answer = 0
    for st in skill_trees:
        st_cut = ''.join(list(filter(lambda x: x in skill, st)))
        for i in range(-1,len(skill)):
            if skill[:i+1] == st_cut:
                answer += 1
                break
    return answer

 

다른 사람들의 정답:

 

스킬들을 앞에서 하나씩 제거해가며 실제 선행 스킬 트리와 비교하는 방식으로 진행했다.

def solution(skill, skill_trees):
    answer = 0

    for skills in skill_trees:
        skill_list = list(skill)

        for s in skills:
            if s in skill:
                if s != skill_list.pop(0):
                    break
        else:
            answer += 1

    return answer