[프로그래머스] 스킬트리 파이썬 풀이

기석·2022년 5월 26일
0

프로그래머스

목록 보기
10/13
post-thumbnail

스킬트리 (Lv.2)


문제 요구사항

  • 선행 스킬 순서에 있는 스킬은 선행 순서 스킬을 배우지 않으면 배울 수 없다.
  • 선행 스킬 순서 skill, 스킬 트리의 배열 skill_trees가 주어질 때, 올바른 스킬 트리의 개수를 반환하라.

문제 접근

  • 각 스킬트리를 탐색할 때, 경우는 다음 세 가지로 나뉜다.
if skill_tree[i] in skill:
	if skill_tree[i] == skill의 앞 부터 순서대로 # 1. 선행 스킬 순서가 맞음
    	continue
    else: 
    	break # 2. 선행 스킬 순서가 잘못된 스킬트리. break
else:
	continue # 3. 선행 스킬이 아닌 스킬. continue

skill의 앞 순서대로 보는 것은 queue 자료구조를 이용할 수 있다.


코드

def solution(skill, skill_trees):
    answer = 0
    for s_tree in skill_trees:
        s = list(skill)
        for c in s_tree:
            if c in skill and c != s.pop(0):
                break
        else:
            answer += 1
    return answer

풀고 나서

  • for - else 문
    for 문이 break 없이 끝났을 때, else 문이 호출된다.
  • 딱 봐도 쉬워보여서 짧게 풀려다가 더 오래 걸렸다. 제대로 풀자.
profile
블로그 이사갔어요 https://kiseoky.tistory.com

0개의 댓글