본문 바로가기
Problem Solving/프로그래머스

[프로그래머스 programmers] 타겟 넘버 문제풀이

by ggyongi 2021. 4. 16.
반응형

programmers.co.kr/learn/courses/30/lessons/43165

 

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

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

programmers.co.kr

dfs 문제이므로 dfs로 접근하였다.

부호는 어차피 +또는 -이기때문에 두가지 경우에 대하여 깊이탐색을 실시하고

말단 노드까지 탐색한 뒤 sum이 target과 같다면 경우의 수를 추가하는 방식.

def solution(numbers, target):

    def dfs(sum, idx):
        if idx == len(numbers):
            if sum == target:
                answer.append(1)
            return

        dfs(sum + numbers[idx],idx+1)
        dfs(sum - numbers[idx],idx+1)

    answer = []
    dfs(0, 0)
    return len(answer)

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글