타겟 넘버

메캉·2022년 7월 16일
0

알고리즘 👑

목록 보기
3/11

URL

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

개선할 점

  1. global 변수 선언에 대해 알아볼 필요 있음
  2. 마지막까지 더한 값이 target과 같은지를 검사하거나, taget값을 numbers에 맞게 빼서 0이 되는지 확인하는 코드도 있겠다
  3. +num시키는 함수, -num 시키는 함수 두 개를 독립적으로 돌리거나, 두 개의 결과를 합해서 진행하는 로직을 수행할 수 있다

내 코드

global answer # 여기에 global을 붙일 필요가 없다
answer = 0

def calc(i, target, numbers, num):
    global answer
    if i > len(numbers) - 1:
        if num == target:
            answer += 1
        return answer
    
    num_p = num + numbers[i]
    num_m = num - numbers[i]
    calc(i+1, target, numbers, num_p)
    calc(i+1, target, numbers, num_m)
    

def solution(numbers, target):
    calc(0, target, numbers, 0)
    global answer
    return answer

가이드 코드

def solution(numbers, target):
    if not numbers and target == 0 :
        return 1
    elif not numbers:
        return 0
    else:
        return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])

0개의 댓글