유형 : DFS
풀이 시간 : 인터넷 참고
from collections import deque
def solution(numbers, target):
#dfs 구현
answer = 0
stack = deque()
ln = len(numbers)
#첫 번째 원소를 insert하고 시작
stack.append([numbers[0], 0])
stack.append([-numbers[0], 0])
while stack:
[curracc, curridx] = stack.pop()
if curridx == ln-1:
if target == curracc:
answer += 1
else:
stack.append([curracc + numbers[curridx+1], curridx+1])
stack.append([-(curracc + numbers[curridx+1]), curridx+1])
return answer
DFS는 stack을 이용하며, while stack: 으로 시작
stack을 pop한 뒤 해당 stack의 자식 노드들을 stack에 추가
(만약 circular 연결이 있다면 이미 방문한 노드는 제외)
'프로그래머스 > Lv. 2' 카테고리의 다른 글
17. 조이스틱 ★★ - 보류 (0) | 2024.07.19 |
---|---|
16. 게임 맵 최단거리 ★ (BFS, zip) (0) | 2024.07.19 |
14. 카펫 (완전 탐색) (0) | 2024.07.18 |
13. 소수 찾기 (완전 탐색) (1) | 2024.07.18 |
12. H-index ★★ (정렬) (0) | 2024.07.18 |