DFS/BFS - 타겟 넘버 (Level 2)

jisu_log·2025년 3월 20일

알고리즘 문제풀이

목록 보기
6/105


def dfs(val, numbers, target, idx):
    cnt = 0
    
    if idx == len(numbers) and val == target: # 끝까지 다 계산했을 때 target값과 일치한다면 
        #print('yes', val)
        return 1 # 경우의 수 1 리턴
    elif idx == len(numbers) and val != target: # 끝까지 다 계산했는데 target값과 다르다면
        #print('no', val)
        return 0 # 경우의 수 0 리턴
    
    # 두 가지 경우가 존재
    cnt += dfs(val + numbers[idx], numbers, target, idx + 1) # 현재 val에 현재 idx에 해당하는 숫자를 더한 경우
    cnt += dfs(val - numbers[idx], numbers, target, idx + 1) # 현재 val에 현재 idx에 해당하는 숫자를 뺀 경우
    return cnt # 리턴받은 값 모두 cnt에 누적해서 리턴

def solution(numbers, target):

    answer = dfs(0, numbers, target, 0) # 시작 val = 0, 시작 idx = 0로 설정
    
    return answer

0개의 댓글