# dfs 방식으로 푼 코드
# bfs로 풀어보니 시간이 더 오래 걸렸다.
def solution(numbers, target):
answer = 0
stack = [[0,0]] # 시작 stack
while stack:
idx, hap = stack.pop()
if idx < len(numbers):
stack.append([idx+1, hap+numbers[idx]])
stack.append([idx+1, hap-numbers[idx]])
else:
if hap == target:
answer += 1
return answer
# bfs 방식으로 푼 코드
def solution(numbers, target):
answer = 0
que = deque([[0,0]]) # 시작 queue
while que:
idx, hap = que.popleft()
if idx < len(numbers):
que.append([idx+1, hap+numbers[idx]])
que.append([idx+1, hap-numbers[idx]])
else:
if hap == target:
answer += 1
return answer
'알고리즘' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기 (0) | 2023.06.29 |
---|---|
[프로그래머스] 제일 작은 수 제거하기 (0) | 2023.06.29 |
[백준] DFS와 BFS (1260) (0) | 2023.06.28 |
[프로그래머스] 없는 숫자 더하기 (0) | 2023.06.28 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2023.06.28 |