스킬트리

김민석·2021년 3월 14일
0

오답노트 Lv.2

목록 보기
6/8

문제

문제 링크


나의 풀이

def solution(skill, skill_trees):
    # answer = 0
    # filter(skilltreeFilter,skill_trees)
    def skilltreeFilter(skill_tree):
        idx = -1
        for learned in skill_tree:
            if learned in skill:
                k = skill.index(learned)
                if idx + 1 == k:
                    idx = k
                else :
                    return False
    
        return True

    return len(list(filter(skilltreeFilter,skill_trees)))

filter를 이용하여 풀었다.

idx를 추적하여 만약 현재 문자의 skill에서의 idx가 이전 idx의 +1이 아니라면 즉시 false를 리턴하고,
그렇지 않는다면 true를 리턴하는 방식이다.


다른 사람의 풀이

def solution(skill, skill_trees):
    answer = 0

    for skills in skill_trees:
        skill_list = list(skill)

        for s in skills:
            if s in skill:
                if s != skill_list.pop(0):
                    break
        else:
            answer += 1

    return answer

우선 for-else 구문을 기억하고 싶었다.
for-else구문은 for문이 전부 돌면, else 문이 실행된다고 한다.

0개의 댓글