📖 Summer/Winter Coding(~2018) > 스킬트리
📖What I thought
<1차 생각>
- filter해서 skill만 남기기
- 순서가 skill이랑 동일하면 ok
<2차 생각> 생각해보니 스킬 순서여야한다고 늘 다 쓰이는 게 아님 즉 스킬이 cbd순이라면 cb도 되고 cd 됨
그럼??? 1차 생각의 1번에서 정리된 스킬트리에 없는 걸 스킬도 필터를 걸어서 거르기 → 필터된 거 2개 비교해서 동일하면 ok
<3차 생각> 테스트 해보니 순서만 중요한 게 아니라 선행 스킬이 중요한 거였음… 즉, cb도 되고 cbd도 되지만 c 건너뛰고 bd는 안 됨
<4차 생각> 생각 조금 더 깊게 해보니 이렇게 복잡하게 쓸 필요 없이 필터된 스킬 트리 길이만큼 스킬을 split해 그러고 얘네가 동일하면 ok
📖풀이
📎구현
def solution(skill, skill_trees):
cnt = 0
skill = list(skill)
for skill_tree in skill_trees:
filtered_tree = list(filter(lambda x: x in skill, skill_tree))
if skill[:len(filtered_tree)] == filtered_tree:
cnt += 1
return cnt📖What I learned
- 필터 함수와 람다식을 자유자재로 사용할 수 있도록 공부하자!