본문 바로가기

코딩 테스트/DFS

[프로그래머스] 타겟 넘버 with Kotlin

문제

numbers의 배열의 숫자들을 적절히 더하거나 빼서 타겟 넘버를 만들 수 있는 방법을 반환하는 문제

 

풀이 방법

완전 탐색 DFS로 풀이

numbers = [1,1,1] 이라면 위와 같이 탐색

 

코드

class Solution {
    var answer = 0
    fun solution(numbers: IntArray, target: Int): Int {
        //target 에서 numbers의 값들을 빼거나 더해서 최종 0 이면 answer ++
        DFS(target, numbers, 0, numbers.size-1)
        
        return answer
    }
    
    fun DFS(target: Int, numbers: IntArray, index: Int, check : Int){
        for(i in arrayOf(1, -1)){
            var t = target
            t += numbers[index]*i
            
            if(index != check) DFS(t, numbers, index+1, check)
            else if(index == check && t == 0) answer++
        }    
    }
}