skill_trees 를 하나씩 돌면서(t) 아래 조건을 만족할 때 answer 개수를 +1 하여 반환한다.skill 을 list 로 변환한 후(list_skill)t 의 현재 순서가 list_skill 에 포함되지 않거나, 포함된다면 0번째에 위치하여야 한다. def solution(skill, skill_trees):
answer = 0
for tree in skill_trees:
success = True
list_skill = list(skill)
for t in tree:
if t in list_skill:
if t != list_skill.pop(0):
success = False
break
if success:
answer += 1
return answer
for-else 문: flag success 변수를 없앨 수 있다.for문 중간에 break 로 빠져나올 때가 있다.
break 문으로 빠져나오지 않았다면 for-else 문의 else 문으로 들어가게 된다.
def solution(skill, skill_trees):
answer = 0
for tree in skill_trees:
list_skill = list(skill)
for t in tree:
if t in list_skill:
if t != list_skill.pop(0):
break
else:
answer += 1
return answer
list 대신 deque 을 사용할 수 있다: deque.popleft()import collections
def solution(skill, skill_trees):
answer = 0
for tree in skill_trees:
deque = collections.deque(skill)
for t in tree:
if t in deque:
if t != deque.popleft():
break
else:
answer += 1
return answer
string to char(string) liststr = "CBD"
list(str) # ['C', 'B', 'D']