Programmers(Python)

[프로그래머스 lv2] 스킬 트리 - 파이썬(Python)

ol-rlo-zl 2023. 4. 4. 23:59

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

1. skill(선행스킬순서)에 있는 원소들에 대하여 skill_tree(스킬트리)에서의 index를, 리스트에 담는다.

2. 1번에서 만약, skill에 있는 원소가 skill_tree에 없다면, 임의로 스킬트리의 길이를 리스트에 담는다.

    (index의 범위가 0부터 스킬트리의 길이-1 까지 이기 때문에 이들 보다 큰 수를 넣기 위함)

3. 리스트가 오름차순 정렬 되어있다면, 가능한 스킬트리 라고 판단한다.

4. 모든 skill_tree에 대하여 1,2,3번 과정을 반복한다.

def solution(skill, skill_trees):
    cnt = 0
    for st in skill_trees:
        res = []
        for s in list(skill):
            if s in st:
                res.append(st.index(s))
            else:
                res.append(len(st))
        if sorted(res) == res:
            cnt += 1
    return cnt

다른 사람 풀이

skill_tree에 있는 원소들에 대하여, 만약 skill에 있는 원소가 있다면, 맨 앞의 skill부터 나온게 맞는지 확인

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