본문 바로가기
코딩 테스트/문제 풀기

[프로그래머스] 스킬트리

by hazel_ 2021. 3. 24.

programmers.co.kr/learn/courses/30/lessons/49993#fnref1

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

[방법 1]

skill_trees에 있는 skill_tree를 하나씩 check함수에서 확인

 

check함수에서는

1. 한글자씩 skill에 포함되어있는지 확인

2. 포함되어 있다면, 몇번째 skill인지 확인한 후

2-1. 0번째라면, check_skill 리스트에 해당 번째 값을 1로

2-2. 0번째 이후라면, 그 전 스킬이 선행되었는지 안되었는지 확인

 

def solution(skill, skill_trees):
    def check (skill, skill_tree):
        check_skill=[0]*len(skill)
        for st in skill_tree:
            for i in range(len(skill)):
                if st==skill[i]:
                    index=skill.index(st)
                    if index == 0:
                        check_skill[index]=1
                    else:
                        if check_skill[index-1]==0:
                            return 0
                        else:
                            check_skill[index]=1
        return 1

    result=0
    for skill_tree in skill_trees:
        result += check(skill, skill_tree)

    return result

 

[방법 2]

skill_tree안에 포함된 skill들을 check_list에 다 넣고, skill과 비교하여 순서를 확인

 

def solution(skill, skill_trees):
    result=0
    for skill_tree in skill_trees:
        check_list=[]
        check_flag=True

        for st in skill_tree:
            if st in skill:
                check_list.append(st)

        for i in range(len(check_list)):
            if not skill[i]==check_list[i]:
                check_flag=False
                break

        if check_flag==True:
            result+=1

    return result

댓글