완전탐색 알고리즘 연습하기 좋은 문제라고 하여 도전하였다.
추가로, 이제까지는 모든 연습을 JavaScript로 하였는데,
1) 언어를 하나 더 잘 다루면 좋을 것 같아서
2) 강력한 내장함수.. "파이썬이라면 풀 수 있었을텐데" 하지 않으려고
이런 사유로 인해 파이썬으로 코테연습을 하기로 하였다.
def solution(numbers, target):
answer = [0]
def dfs(i, result):
if i == len(numbers):
if result == target:
# 최대 깊이에 도달했을 때, result가 target과 같으면,
answer[0] += 1 # counting한다.
return
# 최대 깊이에 도달하지 않았으면
# 각 parent는 +- numbers[index]를 element로 가진다.
dfs(i+1, result + numbers[i])
dfs(i+1, result - numbers[i])
# 함수 종료
dfs(0, 0) # index : 0, result : 0에서부터 DFS를 수행한다.
return answer[0]