프로그래머스 깊이/너비 우선 탐색 문제풀이 입니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43165
[나의 풀이1]
# bfs
def solution(numbers, target) : 
    
    answer = 0
    
    from collections import deque
    
    # 값,인덱스
    queue = deque([[numbers[0],0],[numbers[0]*(-1),0]])
        
    while queue:
        
        v,n = queue.popleft()
        if n < len(numbers)-1:
            n += 1
            queue.append([v+numbers[n],n])
            queue.append([v-numbers[n],n])
        
        else:
            break
        
    for x in queue:
        if x[0] == target:
            answer += 1
    
    return answer
[나의 풀이2]
# dfs
def solution(numbers, target) : 
    
    answer = 0
    
    # 값,인덱스
    stack = list([[numbers[0],0],[numbers[0]*(-1),0]])
        
    while stack:
        
        v,n = stack.pop()
        if n < len(numbers)-1:
            n += 1
            stack.append([v+numbers[n],n])
            stack.append([v-numbers[n],n])
        
        else:
            if v == target:
                answer += 1
    
    return answer
DFS , BFS 두 가지 알고리즘으로 각각 해결하였습니다. stack 또는 queue 자료에 [현재까지 더한 값, 더한 갯수] 를 주어진 갯수 n개까지 연산하고 target 값과 같을 시 answer에 1개씩 더하는 방식입니다.🐾🐾🐾
감사합니다.