본문 바로가기
Engineering WIKI/Programmers

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

by wonos 2022. 5. 23.
 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

내 풀이 1차시도 실패

def solution(skill, skill_trees):
    answer = 0
    
    skill_dict = dict()
    for index, val  in enumerate(skill):
        skill_dict[val] = index
    
    for a in skill_trees:
        check_list = list()
        for b in a:
            if b in skill:
                check_list.append(skill_dict[b])
        if sorted(check_list) == check_list and check_list[0] == 0:   
            answer += 1
        
    return answer

다른사람 풀이

def solution(skill, skill_trees):
    answer = 0

    for skills in skill_trees:
        skill_list = list(skill)

        for s in skills:
            if s in skill:
                if s != skill_list.pop(0):
                    break
        else:
            answer += 1

    return answer

다른 사람 풀이 2

def solution(skill, skill_trees):
    answer = 0
    for i in skill_trees:          # 스킬트리 중에서 하나
        skillist = ''
        for j in i:                # 스킬 순서 
            if j in skill:         # 스킬이 skill에 있으면
                skillist += j      # 있는 것만 스킬리스트에 추가
                
        # 그 순서가 skill과 같다면
        if skillist == skill[0:len(skillist)]: 
            answer += 1   # 가능한 스킬트리
    return answer