rueki

프로그래머스 LV2. 타겟 넘버 (DFS) 본문

프로그래머스 연습

프로그래머스 LV2. 타겟 넘버 (DFS)

륵기 2022. 10. 7. 00:18
728x90
반응형

 

여기서 문제 접근은 양수 음수 더하는 모든 경우의 수를 고려해야 하며 target값과 같아지는 경우를 세야한다는 것이다.

DFS로 양수 루트, 음수 루트로 나누어서 시행하면 풀 수 있다.

 

cnt = 0

def dfs(L, S, numbers, target):
    global cnt
    #숫자 최대 길이
    max_len = len(numbers)
    
    #만약 level이 숫자 길이만큼 도달하면
    #경우 하나 추가(target 값과 비교)
    if L == max_len:
        if S == target:
            cnt += 1
    else:
        dfs(L+1, S + numbers[L], numbers, target)
        dfs(L+1, S - numbers[L], numbers, target)

    return cnt
    
            


def solution(numbers, target):
    answer = dfs(0,0,numbers, target)
    return answer
728x90
반응형
Comments