Algorithm/DFS

[프로그래머스 Lv.2] 타겟 넘버 재풀이

킹우현 2023. 9. 28. 15:38
 

[프로그래머스 Lv.2] 타겟 넘버

# BFS from collections import deque def solution(numbers, target): answer = 0 queue = deque() queue.append((numbers[0],0)) queue.append((-numbers[0],0)) while queue: v, index = queue.popleft() index += 1 if index < len(numbers): queue.append((v+numbers[ind

woohyun-king.tistory.com

def solution(numbers, target):
    answer = 0
    
    def dfs(depth,s):
        
        nonlocal answer
        
        if depth == len(numbers):
            if s == target:
                answer += 1
            return
        
        dfs(depth+1,s+numbers[depth])
        dfs(depth+1,s-numbers[depth])
        
    dfs(0,0)
    
    return answer

이전에 풀었던 DFS/BFS 문제 중 하나인데, 이전에 적었던 풀이보다 훨씬 더 빠르고 간단하게 풀이한 나의 모습을 보며 조금 뿌듯했다(ㅎㅎ..)

 

DFS와 BFS를 사용하여 모든 경우의 수를 탐색하고, 모든 경우의 수 중에서 target 값과 같을 때 answer를 +1 해주는 방식으로 풀이해주면 된다 :)