programmers.co.kr/learn/courses/30/lessons/43165

 

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

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

programmers.co.kr

문제 설명

이 문제는 그래프로 접근 할 수 있다. 

DFS또는 BFS를 활용하면 된다 (DFS가 더 빠르다)

해당 코드는 DFS로 풀었다

 

 

코드 구현

python3 으로 풀었다.

더보기
answer =0

def dfs(index, numbers, sum, target):
    global answer
    n=len(numbers)
    #끝에 도달했으면
    if(index == n-1):
        #sum 값이 target값과 일치하면 answer++
        if(sum == target):
            answer+=1
    #끝이 아니라면
    else:   
        dfs(index+1 , numbers, sum+numbers[index+1],target)
        dfs(index+1 , numbers, sum-numbers[index+1],target)

def solution(numbers, target):
   
    dfs(-1,numbers,0,target)
    print(answer)
    return answer



numbers=[1, 1, 1, 1, 1]
target = 3
solution(numbers,target)

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

[LeetCode] Symmetric Tree  (0) 2022.05.05
[프로그래머스] 크레인 인형뽑기 게임  (0) 2021.03.16
[백준][10174]팰린드롬  (0) 2020.10.17
[백준][2577] 숫자의 개수  (0) 2020.10.17
백준 3190 뱀  (0) 2019.10.11
복사했습니다!