728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/49993?language=python3
코딩테스트 연습 - 스킬트리
programmers.co.kr
풀이
이 문제는 유저가 만든 각 스킬트리(skill_trees)를 선행스킬순서(skill)대로 확인하며 각 스킬트리가 가능한지 확인했다.
우선 skill의 각 인덱스순서대로 값을 꺼내 tree에 들어있지않으면 ch_order을 False로 바꿔주었다. 이유는 선행스킬을 찍지않았지만 이후 스킬을 찍는 것을 판단하기 위함이다.
skill의 각 인덱스순서대로 값을 꺼내 tree에 들어있는지 확인하고 들어있으면 해당 값이 있는 인덱스 위치를 num변수에 저장했다. 만약 tree.index(i)의 값이 num보다 크거나 ch_order이 False이면 num을 -1로 저장후 break문을 통해 tree에 대한 검사를 멈추어주었다.
여기서 멈추는 조건에 num>tree.index(i)을 사용한 이유는 num이 tree.index(i)보다 크면 선행스킬을 나중에 찍은것이기 때문이다.
그리고 not ch_order조건을 준 이유는 선행스킬을 찍지않고 다음 스킬을 찍었기 때문이다.
tree에 대한 검사 이후, num값이 -1이 아니면 answer값을 증가시켰다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def solution(skill, skill_trees):
answer = 0
for tree in skill_trees:
num=0
ch_order=True
for i in skill:
if i in tree:
if num>tree.index(i) or not ch_order:
num=-1
break
else:
num = tree.index(i)
else:
ch_order=False
if num!=-1:
answer+=1
return answer
|
cs |
728x90
반응형
'Python3 > 프로그래머스' 카테고리의 다른 글
2022.05.31 [프로그래머스] (python 파이썬) 전화번호 목록 (0) | 2022.05.31 |
---|---|
2022.05.31 [프로그래머스] (python 파이썬) 베스트앨범 (0) | 2022.05.31 |
2022.04.19 [프로그래머스] (python 파이썬) 입국심사 (0) | 2022.04.19 |
2022.04.09 [프로그래머스] (파이썬 python) 가장 큰 수 (0) | 2022.04.09 |
2022.03.09 [프로그래머스] (python 파이썬) 메뉴 리뉴얼 (0) | 2022.03.09 |
댓글