스킬트리 - python

고태희·2021년 12월 1일
0

알고리즘

목록 보기
1/15

문제설명

제한조건

예시

나의풀이

def solution(skill, skill_trees):
    answer = 0
    for s in skill_trees:
        if possible(skill,s):
            answer += 1
    return answer

def possible(skill,s):
    arr = [] #skill순서대로 s에 있는 인덱스 담는 배열
    for i in skill:
        arr.append(s.find(i))
    for i in range(0,len(arr)-1):
        if arr[i] > arr[i+1]:
            if arr[i+1] != -1:
                return False
        if arr[i] == -1:
            if arr[i+1] >= 0:
                return False
    return True

다른사람 풀이

from collections import deque
def solution(skill, skill_trees):
    answer = 0
    for skill_tree in skill_trees:
        q = deque(list(skill))
        for s in skill_tree:
            if s in q:
                if s != q.popleft():
                    break
        else:
            answer += 1
    return answer

주어진 스킬을 리스트화 시켜서
스킬트리별로 스킬에 있는것이라면 pop()하여 같지않다면 break
같지 않다는 것은 순서가 다르다는 뜻이기 때문이다..

for-else문을 이용하여 break문에 걸리지 않는다면 잘 통과했다는 뜻이므로 answer + 1 을 해준다.

0개의 댓글