📖문제
📝풀이과정
- target에서 n개의 수를 적절히 더하거나 빼서 0으로 만드는 방식으로 문제를 풀었다.
- 전체 경우를 모두 확인할 때 DFS를 활용했다.
리프노드까지 계산을 했을 때 0이 된다면 answer을 +1해준다.
⌨코드
def dfs(numbers, index, tmp):
global answer
if index == len(numbers):
if tmp == 0:
answer += 1
return
dfs(numbers, index+1, tmp - numbers[index])
dfs(numbers, index+1, tmp + numbers[index])
answer = 0
def solution(numbers, target):
global answer
dfs(numbers, 0, target)
return answer
⌨ 다른 분의 코드
- target에서 적절히 더하거나 빼서 0으로 만드는 아이디어는 같다.
- 따로 dfs 함수를 두지 않고 solution 자체를 재귀하셨다.
def solution(numbers, target):
if not numbers and target == 0 :
return 1
elif not numbers:
return 0
else:
return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])
💡새로 알게된 문법
리스트가 비었는지 확인할 때 쓰는 'not'
if not numbers :
return 0