Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

No Limitation

[DFS] 타겟 넘버 - 프로그래머스 본문

프로그래밍

[DFS] 타겟 넘버 - 프로그래머스

yesungcho 2022. 1. 30. 10:18

https://programmers.co.kr/learn/courses/30/lessons/43165?language=python3 

 

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

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

programmers.co.kr

 

Fact Finding


  • 재귀 함수를 통한 DFS 구현
  • '+'와 '-'를 번갈아서 적용해주어 모든 경우의 수를 check
  • 이 중 타겟 넘버와 일치할 때 +1 증가시키고 recursion 수행

Time Complexity


  • 최악의 경우 O(n^2)로 판단되는 데 정확히 분석한 것인지 확실하지 않음

 

def problem(arr, target, ans, i, sums = 0) : 
    if i == len(arr) : 
        sums = sum(arr)
        if (sums == target) : 
            ans += 1
        return ans
    i += 1
    ans = problem(arr, target, ans, i)
    i -= 1
    arr[i] = -arr[i]
    i += 1
    ans = problem(arr, target, ans, i)
    return ans
def solution(numbers, target):
    ans = 0; i = 0;
    answer = problem(numbers, target, ans, i)
    return answer