본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 스킬트리 (python)

by 김홍중 2021. 5. 13.

1. 문제

프로그래머스 스킬트리

 

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

 

2. 설명

 

3. 접근

  • 주어진 스킬만 남도록 스킬트리를 필터링합니다.
  • 필터링된 스킬트리를 스택을 이용하여 스킬트리 앞에서 pop한 것이 스킬과 일치하지 않은, 즉 스킬 순서가 아닌 것의 수를 셉니다. 처음부터 순서가 아니면 바로 break하려고 순서가 아닌 수를 셌습니다.
  • 스킬트리 수에서 카운트한 수를 뺀것을 리턴합니다.

 

4. 코드

def filter_skill(skill, skill_trees):
    filtered_skills = []
    word = ""
    
    for skill_tree in skill_trees:
        for i in range(len(skill_tree)):
            for one in skill:
                if one == skill_tree[i]:
                    word += one
        filtered_skills.append(word)
        word = ""
    print(word)
    return filtered_skills
                    
def solution(skill, skill_trees):
    answer = 0
    filtered_skills = []
    filtered_skills = filter_skill(skill, skill_trees)

    no_answer = 0
    for filtered_skill in filtered_skills:
        skill_list = list(filtered_skill)
        for i in range(len(skill_list)):
            if skill[i] != skill_list.pop(0):
                no_answer += 1
                break
    
    return len(filtered_skills) - no_answer

print(filter_skill("CBD", ["BACDE", "CBADF", "AECB", "BDA"]))
print(solution("CBD", ["BACDE", "CBADF", "AECB", "BDA"]))

print(filter_skill("CBD", ["ZEF", "TIG", "LFE", "ICT"]))
print(solution("CBD", ["ZEF", "TIG", "LFE", "ICT"]))

댓글