문제
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+
programmers.co.kr
풀이
- dfs함수를 통해 인덱스를 증가시키면서 2번의 재귀를 진행(-, +)하고, 만약 idx가 배열의 끝까지 진행되어서 원하는 값이 나왔다면 answer에 추가
코드
answer = 0
def dfs(numbers, target, idx, sum):
global answer
if idx == len(numbers):
if sum == target:
answer += 1
return
dfs(numbers, target, idx+1, sum+numbers[idx])
dfs(numbers, target, idx+1, sum-numbers[idx])
def solution(numbers, target):
dfs(numbers, target, 0, 0)
return answer
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv2. 더 맵게 (0) | 2021.05.24 |
---|---|
[Programmers] Lv2. 오픈채팅방 (0) | 2021.05.24 |
[Programmers] Lv2. 기능개발 (0) | 2021.05.20 |
[Programmers] Lv2. 짝지어 제거하기 (0) | 2021.05.20 |
[Programmers] Lv2. 124 나라의 숫자 (0) | 2021.05.20 |
댓글