Closed
Description
📌 TODO
- 문제 풀이
- 정리
🎢 타겟 넘버
💬 Idea
-
DFS를 이용하여 깊이우선탐색을 진행하며 +, - 연산을 수행하자
→ 재귀함수를 호출하자!
-
연산이 +, - 2가지 경우가 있으므로
-
- 연산을 수행하는 dfs함수와 - 연산을 수행하는 dfs 함수를 모두 호출한다.
- 모든 경우의 수에 +, - 연산을 수행하여 타겟 넘버에 도달하는 경우를 뽑아낼 수 있도록 재귀함수를 호출한다.
-
💬 풀이
import Foundation
var answer: Int = 0
func solution(_ numbers:[Int], _ target:Int) -> Int {
dfs(numbers: numbers, target: target, index: 0, sum: 0)
return answer
}func dfs(numbers: [Int], target: Int, index: Int, sum: Int) {
if index == numbers.count {
if target == sum {
answer += 1
}
return
}dfs(numbers: numbers, target: target, index: index + 1, sum: sum + numbers[index]) dfs(numbers: numbers, target: target, index: index + 1, sum: sum - numbers[index])
}
소요시간
: 1시간 30분
💬 알게된 것
✅ DFS/BFS
-
DFS에서는 재귀함수 호출을, DFS에서는 큐 사용을 주로 하여 문제를 풀이한다는 것을 알게 되었다.
DFS BFS 동작 원리 스택 큐 구현 방법 재귀 함수 이용 큐 자료구조 이용