[프로그래머스]Python_타겟 넘버_BFS/DFS

Adler·2023년 12월 14일
post-thumbnail

문제

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

사용할 수 있는 숫자가 담긴 numbers, 타겟 넘버 target이 매개 변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
  • 각 숫자는 1 이상 50 이하인 자연수입니다.
  • 타겟 넘버는 1 이상 1000 이하인 자연수 입니다.

BFS 풀이

def solution(numbers, target):
    leaves = [0] # 모든 계산 결과를 담는다.
    count = 0 
    
    for num in numbers:
        temp = [ ]
    # 자식 노드
        for leaf in leaves:
            temp.append(leaf + num) # 더하는 경우
            temp.append(leaf - num) # 빼는 경우 
        leaves = temp
        
    for leaf in leaves:
        if leaf == target :
            count += 1
    return count
profile
지식을 정리하기 위한 블로그입니다.

0개의 댓글