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