본문 바로가기

코딩테스트/Python

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

내 코드

def solution(skill, skill_trees):
    answer = 0
    
    for st in skill_trees:
        s = list(skill)
        for k in st:
            if k in s:
                if k == s[0]:
                    s.pop(0)
                else:
                    break
        else:
            answer+=1
    
    return answer

스킬트리의 문자열들을 하나씩 살펴보면서 답을 구했다. 

"AECB"를 예로들면 A와 E는 skill에 없으므로 넘어간다. C는 skill에 존재하므로 가장 처음 배워야 할 스킬, 즉 skill[0]이 C인지 확인한다. 맞으면 s.pop(0)을 하여 첫 스킬을 배웠다고 가정한다. 이렇게 for 문을 돌리고 만약 배워야 할 스킬을 배우지 않았으면 break를 한다. break에 걸리지 않으면 answer+=1을 하여 답을 구한다.

 

다른사람 코드

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

나랑 비슷하다!!!