Agorithm/프로그래머스
프로그래머스 Level 2 스킬트리
kimjinho1
2022. 6. 28. 16:02
728x90
반응형
맨 앞 스킬부터 순서대로 나오는지 확인해야 되기 때문에, 큐를 사용해서 풀었다.
첫 번째 풀이는 파이썬의 for-else문을 몰라서 check 변수를 사용한 것이다.
두 번째 풀이는 for-else문을 사용했다.
풀이 for-else X
1. 스킬 순서를 담는 큐를 만들어준다.
2. 스킬 순서에 포함되는 스킬이 나왔는데 선행 스킬이 아니면 불가능한 스킬트리이므로 check = 0을 해준다.
3. 반대로 선행 스킬이 맞다면 스킬 순서 큐를 popleft 해준다.
4. ans += check(1: 올바른 스킬트리, 0: 불가능한 스킬트리)
def solution(skill, skill_trees):
ans = 0
for skill_tree in skill_trees:
q = list(skill)
check = 1
for s in skill_tree:
if s in q and s != q.pop(0):
check = 0
break
ans += check
return ans
풀이 for-else O
for 문이 break 등으로 중간에 빠져나오지 않고 끝까지 실행됐을 경우 else문이 실행된다.
check 변수가 필요 없어지기에 코드 한 줄이 줄었다.
from collections import deque
def solution(skill, skill_trees):
ans = 0
for skill_tree in skill_trees:
q = deque(skill)
for s in skill_tree:
if s in q and s != q.popleft():
break
else:
ans += 1
return ans
728x90
반응형