프로그래머스 - 타겟넘버

Hayoung Kim·2022년 4월 7일
0

Algorithm

목록 보기
1/4

모든 숫자를 + 혹은 - 연산을 대입했을 경우를 확인하면서 마지막 원소에 해당하는 값을 확인했을때 타겟 넘버와 같으면 개수를 하나씩 늘려주는 방법으로 풀이함.
이때 모든 경우를 확인하기 위해서 단순한 형태의 DFS를 사용함.

visited = []
cnt = 0
def dfs( graph, idx, total, target):
    global cnt
    
    if idx == len(graph):
        if total == target:
            cnt += 1
        return 
    
    dfs(graph, idx+1, total + graph[idx], target)
    dfs(graph, idx+1, total - graph[idx], target)
    
def solution(numbers, target):
    global visited, cnt
    answer = 0
    visited = [False]*len(numbers)
    
    dfs(numbers, 0, 0, target)
    answer = cnt
    return answer

0개의 댓글