유형 : 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
복사했습니다!