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 문이 실행된다고 한다.