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) list
str = "CBD"
list(str) # ['C', 'B', 'D']