Link
Introduction
스킬 트리 중 선행스킬과 관련된 스킬만 뽑아서 순서대로 배웠는지만 체크하면 되는 간단한 문제이다.
Note
- 특이사항 없음
Solution
1
2
3
4
5
6
7
def solution(skill, skill_trees):
answer, skill_set = 0, set(skill) # 1
for skill_tree in skill_trees:
required_skills = ''.join([s for s in skill_tree if s in skill_set]) # 2
if skill.startswith(required_skills): # 3
answer += 1
return answer
- 비교 연산의 속도를 빠르게 하기 위해 skill로 집합을 만든다.
- 스킬트리를 하나씩 순회하면서 선행 스킬만 뽑아 string을 다시 만든다.
- 선행 스킬을 순서대로 배웠는지 체크한다.
Comment
문자열과 배열을 손쉽게 다룰 수 있는 파이썬의 장점이 부각되는 문제였다.
정말 알고리즘 한정 최고의 언어라고 생각한다.