본문 바로가기
프로그래머스/lv.2

(프로그래머스) lv.2 타겟넘버

by bingual 2024. 1. 15.
반응형

 

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

 

프로그래머스

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

programmers.co.kr

문제풀이

최소 값을 구하란 말은 없었기에 재귀를 이용해서 풀이

def solution(numbers, target):
    def dfs(i, current):
        # 순회를 완료 했을때 현재 까지 계산한 값이 타겟과 같다면 1 아니면 0 리턴
        if i == len(numbers):
            return 1 if current == target else 0

        add = dfs(i + 1, current + numbers[i])  # 경우의 수 만큼 더하기
        sub = dfs(i + 1, current - numbers[i])  # 경우의 수 만큼 빼기

        return add + sub  # 더하고 빼서 얻은 조합의 합계

    answer = dfs(0, 0)
    return answer