https://school.programmers.co.kr/learn/courses/30/lessons/43165
보자마자 이 문제가 떠올랐다.
1
2
3
4
5
6
7
8
9
10
11
#깊이 우선 탐색(DFS) 매서드
count = 0
def dfs(i, now):
global count
if i == len(numbers):
if now == target:
count += 1
else:
dfs(i+1, now+numbers[i])
dfs(i+1, now-numbers[i])
dfs(0, 0)
평소에는 주로 주피터노트북에다가 인터프리터로 바로 받아 본다고 이러는데
실제 다른 환경하고는 조금 차지가 있는거 같아서 에러가 났다. 백준환경에서 global을 사용했을때와 똑같이 했는데 프로그래머스에서는 계속 에러가나서…. 로직은 맞는데 어디서 문제가 있는지 파악을 못했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(numbers, target):
answer = DFS(numbers, target, 0)
return answer
def DFS(numbers, target, depth):
answer = 0
if depth == len(numbers):
if sum(numbers) == target:
return 1
else: return 0
else:
answer += DFS(numbers, target, depth+1)
numbers[depth] *= -1
answer += DFS(numbers, target, depth+1)
return answer
Comments powered by Disqus.