스킬트리 (python)

SeoYng·2020년 9월 6일
0

불필요한 요소를 제거한후 순서가 맞는지 확인하는 문제, startswith 사용

👀 깃헙 소스

문제설명

선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.

예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.

위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다.

선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요.

입출력 예

skill	skill_trees			return
CBD	[BACDE, CBADF, AECB, BDA]	2

솔루션
user_sk에 skill에 있는 문자만 남긴후 join해준다.
skill이 이 문자로 시작하면 올바른 스킬트리임을 이용한다.

skill : CBD
# user_sk
['B', 'C', 'D'] (X)
['C', 'B', 'D'] (O)
['C', 'B'] (O)
['B', 'D'] (X)

코드

# 파이썬
def solution(skill, skill_trees):
    answer = 0
    for sk in skill_trees:
        user_sk = [ alpha for alpha in sk if alpha in skill ]
        if skill.startswith(''.join(user_sk)):
            answer +=1
    return answer
profile
Junior Web FE Developer

0개의 댓글