class Solution {
var answer = 0
fun solution(numbers: IntArray, target: Int): Int {
dfs(numbers, target, 0)
return answer
}
fun dfs(numbers: IntArray, target: Int, depth: Int) {
if (depth == numbers.size) {
var sum = 0
for (i in numbers.indices) {
sum += numbers[i]
}
if (sum == target) {
answer++
}
return
} else {
dfs(numbers, target, depth + 1)
numbers[depth] *= -1
dfs(numbers, target, depth + 1)
}
}
}
/*
depth가 numbers.size가 되기전에 target 값과 같은 경우를 생각할 수 있는데.. 뒤에 계산까지 고려하여 완전 탐색으로 모든 경우를 계산
*/
문제 풀이의 핵심은 해당 depth의 넘버가 +일 경우와 -일 경우의 완전 탐색이다.
'알고리즘' 카테고리의 다른 글
백준 2003 투포인터 수들의 합2 코틀린 (0) | 2020.07.04 |
---|---|
dfs 프로그래머스 네트워크 (0) | 2020.05.17 |
스택) 백준 9935번: 문자열 폭발 코틀린 (0) | 2020.05.01 |
프로그래머스 기능개발 코틀린 (0) | 2020.01.19 |
프로그래머스 섬 연결하기 (0) | 2019.08.29 |