타겟 넘버

zzwwoonn·2022년 6월 20일
0

Algorithm

목록 보기
56/71

# numbers = [1, 1, 1, 1, 1]
# target = 3
# result = 5
numbers = [4, 1, 2, 1]	
target = 4	
# result = 2

# -1 +1 +1 +1 +1 = 3
# +1 -1 +1 +1 +1 = 3
# +1 +1 -1 +1 +1 = 3
# +1 +1 +1 -1 +1 = 3
# +1 +1 +1 +1 -1 = 3

def solution(numbers, target):
    global answer 
    answer = 0

    def dfs(idx, sumVal):
        global answer

        # print("idx = ", idx, " sumVal = ", sumVal)
        if idx == len(numbers)-1:
            if sumVal == target:
                answer += 1
                # print("Find, answer =", answer)
            return
        
            
        # print("idx = ", idx)
        dfs(idx + 1, sumVal-numbers[idx])
        dfs(idx + 1, sumVal+numbers[idx])
    
    dfs(-1,0)

    return answer

print(solution(numbers, target))

DFS 로 간단하게 풀었다.

첫 번째 항을 보자마자 값을 -1 하던 +1 하던 해줘야 하는 부분에서 어떻게 해줘야 할 지 애매했는데 그냥 제일 처음 dfs 돌 때 idx를 -1로 시작해서 첫 번째 항을 볼 때 => idx = 0 일 때부터 값을 더해주면 된다.

0개의 댓글