본문 바로가기

알고리즘

프로그래머스 타겟넘버 (python)

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

문제


주어진 숫자들을 이용해서 - + 부호를 붙여 타겟넘버를 만들면 된다. 타겟넘버를 만드는 방법 의 개수를 리턴하면 완료

입력


각수는 k (1 <= k <= 50) 타겟넘버는 t (1 <= t <= 1000)

출력


정수하나

 

cnt = 0 # 모든 방법의 수 변수

def dfs(sums,cur,numbers,target,N):
    global cnt # 전역변수 cnt
    if cur == len(numbers): # 현재 까지 더한 횟수가 정수들의 수와 같다면 즉 모두 더했다면
        if sums == target: # 현재까지 더해 저장된 수가 타겟넘버 즉 정답이면
            cnt+=1 # 방법의 수를 하나더한다.
        return # 현재 방법을 마쳤으므로 리턴
    
    dfs(sums + numbers[cur],cur + 1,numbers,target,N) # 더할때와 뺄때 각각 의 경우를 dfs로 계산한다.
    dfs(sums - numbers[cur],cur + 1,numbers,target,N)
    
def solution(numbers, target):
    answer = 0 # 정답 변수
    dfs(0,0,numbers,target,len(numbers)) # dfs(각 방법의 현재까지 더한수,현재 몇번더했는지 나타내는 수,
    									 # 정수 리스트, 타겟넘버, 정수들의 수)
    answer = cnt # 정답변수 = 모든 방법의 수 
    return answer

'알고리즘' 카테고리의 다른 글

프로그래머스 2016년 cpp  (0) 2022.08.10
프로그래머스 체육복 (c++)  (0) 2022.08.09
백준 (2460) 지능형 기차 2 (python)  (0) 2022.08.06
백준 (10818) 최소, 최대 (python)  (0) 2022.08.05
백준 (3460) 이진수 (python)  (0) 2022.08.04