Skip to content

Commit 09f4cb2

Browse files
committed
[PGS] 타겟넘버 - 재귀를 이용한 DFS 풀이 / Level 2 / 30분 / 성공
1 parent 3b4b0e1 commit 09f4cb2

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
타겟넘버 - 재귀를 이용한 DFS 풀이
3+
'''
4+
5+
def solution(numbers, target):
6+
answer = 0
7+
n = len(numbers)
8+
9+
# dfs를 위한 재귀함수
10+
def dfs(index, result):
11+
nonlocal answer # 바깥 함수의 변수를 사용하기 위해 nonlocal 키워드 사용
12+
13+
if index == n: # 모든 숫자를 다 사용한 경우, 현재 합이 target과 같은지 확인
14+
if result == target:
15+
answer += 1
16+
return
17+
else:
18+
# 현재 합에 다음 숫자를 더하거나 빼는 두 가지 경우로 dfs 함수 호출
19+
dfs(index+1, result+numbers[index]) # 더한 경우
20+
dfs(index+1, result-numbers[index]) # 뺀 경우
21+
22+
dfs(0, 0) # 첫번째 인덱스와 초기합 0
23+
24+
return answer
25+
26+
# 예제 1: 숫자 배열 [1, 1, 1, 1, 1]로 목표 값 3을 만드는 방법의 수
27+
numbers = [1, 1, 1, 1, 1]
28+
target = 3
29+
print(solution(numbers, target)) # 결과: 5
30+
31+
# 예제 2: 숫자 배열 [4, 1, 2, 1]로 목표 값 4를 만드는 방법의 수
32+
numbers = [4, 1, 2, 1]
33+
target = 4
34+
print(solution(numbers, target)) # 결과: 2

0 commit comments

Comments
 (0)