Algorithm/Programmers

[Programmers ] Lv2. 타겟 넘버

by somida 2021. 5. 24.

문제

바로가기

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

programmers.co.kr

 

풀이

  • dfs함수를 통해 인덱스를 증가시키면서 2번의 재귀를 진행(-, +)하고, 만약 idx가 배열의 끝까지 진행되어서 원하는 값이 나왔다면 answer에 추가

 

코드

answer = 0

def dfs(numbers, target, idx, sum):
    global answer
    if idx == len(numbers):
        if sum == target:
            answer += 1
        return
    dfs(numbers, target, idx+1, sum+numbers[idx])
    dfs(numbers, target, idx+1, sum-numbers[idx])

def solution(numbers, target):
    dfs(numbers, target, 0, 0)
    return answer

 

반응형

댓글