02_03_더하거나 빼거나

Bnow·2021년 10월 10일
0

1) 모든 경우의 수 구하기
2) 앞의 칸 +/- 정할때 마다, target 과 array 변경
3) 재귀함수

#numbers = [2,3,4,5]
numbers = [2,3,1]
target_number = 0
count =0

def get_count_of_ways_to_target_by_doing_plus_or_minus(array, target):
    # 구현해보세요!
    #                                                 target : 3
    # -1/ 1, 1, 1, 1 -> function(array[1:n],target+1)   4
    # -1, 1/ 1, 1, 1 -> function(array[1:n],target-1)   3
    # -1, 1, 1/ 1, 1 -> function(array[1:n],target-1)   2
    # -1, 1, 1, 1/ 1 -> True or False                   1

    global count

    n = len(array)
    #print("n", n)

    if n<=1:
        if abs(array[0]) == abs(target):    #최종 target이 -1인 경우
            print("target matched", array)
            count+=1
            return

        else:
            return

    #minus
    print("n=",n,"array[1:n]",array[1:n],"target",target)
    ret_minus = get_count_of_ways_to_target_by_doing_plus_or_minus(array[1:n], target + array[0])

    #plus
    ret_plus = get_count_of_ways_to_target_by_doing_plus_or_minus(array[1:n], target - array[0])

    return count


print(get_count_of_ways_to_target_by_doing_plus_or_minus(numbers, target_number))  # 5를 반환해야 합니다!
profile
행복한 코딩

0개의 댓글

관련 채용 정보