본문 바로가기
Algorithm/프로그래머스

[프로그래머스] Lv2 - 스킬트리 (파이썬)

by _temp 2022. 5. 13.

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

 

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

 

programmers.co.kr

 

def solution(skill, skill_trees):
    answer = 0
    for tree in skill_trees:
        index = []
        for x in skill:
            i = tree.find(x)
            if i != -1:
                index.append((i, x))
        index.sort()
        result = ''
        for _, x in index:
            result += x
        if result and result[0] == skill[0] and result in skill:
            answer += 1
        elif not result:
            answer += 1
    return answer

 

풀이
1. 각 문제에서 스킬 트리의 인덱스를 앞에서부터 찾아서 index에 append
2. index를 정렬
3. index의 두 번째 값을 차례대로 result에 합치기
4. result가 '' 이거나 스킬 트리에 존재하면서 첫 번째 값이 스킬 트리 맨 앞 값이라면 answer += 1
    - ''이면 항상 가능, 첫 번째 값은 항상 스킬 트리의 맨 앞 값이 여야함