본문 바로가기

Development/CodingTest

[DFS] 프로그래머스 level 2 타켓넘버 Python 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/43165

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 접근

  • 모든 경우의 수를 구하는 것이므로 DFS/BFS
  • +1, -1 각각 연산하면서 값이 target과 같으면 answer +1

코드

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