
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 |