본문 바로가기

취준/프로그래머스

[프로그래머스 Programmers][Python] 스킬트리

문제 : https://programmers.co.kr/learn/courses/30/lessons/49993

 

코딩테스트 연습 - 스킬트리 | 프로그래머스

 

programmers.co.kr

이 문제는 스킬의 순서만 신경쓰면 되는 문제다. 나는 파이썬으로 코딩하니까 list.index() 를 썼다. 

 

  1. 우선 skill_trees 를 돌면서 ->st로 만듦
  2. idx 관리함. 이걸로 돌고있는 현재 skill의  index를 관리한다.
    1. skill_trees 의 각 skill 순서의 원소를 뽑는다 ->stt
      1. stt 가 skill에 없다 ? 그럼 무시해도 좋음 -> continue
      2. idx< skill.index(stt) 이 부분이 핵심인데, 지금 보고있는게 index 보다 크면 -> 먼저 배워야할 스킬을 안배웠다는 뜻
        1. 바로 ispossible False 로 바꿔버리고 break
      3. 아니면 -> 스킬 순서에 맞다 idx+=1
    2. 그다음에 st 단위로 answer 가능갯수를 +1 한다.

 

 

def solution(skill, skill_trees):
    answer = 0
    
    for st in skill_trees:
        idx = 0
        ispossible = True
        for stt in st:
            if stt not in skill:
                continue
            if idx < skill.index(stt):
                ispossible = False
                break
            else:
                idx+=1
                
                
        if ispossible:
            answer+=1
            
    
    return answer