문제링크 : 코딩테스트 연습 - 스킬트리 | 프로그래머스 (programmers.co.kr)

풀이 방법
스킬트리의 순서가 선행스킬 순서와 일치하면 풀리는 문제이다. 자료구조 스택을 활용하여 스킬트리의 스킬이 선행스킬 순서와 일치하면 answer를 더하여 반환하면된다고 생각했다.
나의 풀이
풀이 확인
def solution(skill, skill_trees):
answer = 0
for i in range(len(skill_trees)):
k = 0
stack = []
for j in range(len(skill_trees[i])):
if skill_trees[i][j] in skill:
stack.append(skill_trees[i][j])
while stack:
if stack[0] == skill[k]:
stack.pop(0)
else:
break
k += 1
if not stack:
answer += 1
return answer
while문을 한 번 더 안쓰고 for문 안에 조건을 하나 더 만들어주면 더 간단하게 해결할 수도 있었을 것 같다.
다른 사람 풀이
풀이 확인
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
파이썬 문법 중에 for-else문법이 있다는 것을 처음 알게 되었다. for-else 문법은 for문이 break 문으로 끊기지 않고 모두 수행되면 else 문이 수행되는 문법이다.
'알고리즘 > problem solving' 카테고리의 다른 글
| [프로그래머스] level2 완전탐색 카펫 (0) | 2021.04.15 |
|---|---|
| [프로그래머스] level2 완전탐색 소수찾기 (0) | 2021.04.15 |
| [프로그래머스] level2 힙 더 맵게 (0) | 2021.04.14 |
| [프로그래머스] level2 정렬 H-Index (0) | 2021.04.14 |
| [프로그래머스] level 2 정렬 - 가장 큰 수 (0) | 2021.04.14 |