From b103b0859a402a749c63be4f21aad09676354e23 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Wed, 28 Dec 2022 19:06:56 +0900 Subject: [PATCH] =?UTF-8?q?updated=20at=202022.=2012.=2028.=20=EC=98=A4?= =?UTF-8?q?=ED=9B=84=207:06:56?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/타겟 넘버/solution.java | 31 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/programmers/타겟 넘버/solution.java b/programmers/타겟 넘버/solution.java index f06d8e0..41f22a4 100644 --- a/programmers/타겟 넘버/solution.java +++ b/programmers/타겟 넘버/solution.java @@ -1,23 +1,24 @@ // [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/43165 import java.util.List; +import java.util.Arrays; import java.util.ArrayList; class Solution { - //BFS + //DFS + private int dfs(int[] numbers, int target, int depth){ + int res = 0; + if(depth == numbers.length){ + // System.out.println(Arrays.toString(numbers)); + if(Arrays.stream(numbers).sum() == target) return 1; + else return 0; + } else{ + res += dfs(numbers, target, depth+1); + numbers[depth] *= -1; + res += dfs(numbers, target, depth+1); + return res; + } + } public int solution(int[] numbers, int target) { - int answer = 0; - List leaves = List.of(0); - for(int num : numbers){ - List tmp = new ArrayList<>(); - for(int parent : leaves){ - tmp.add(parent + num); - tmp.add(parent - num); - } - leaves = tmp; - } - for(int leaf : leaves){ - if(leaf==target) answer ++; - } - return answer; + return dfs(numbers, target,0); } } \ No newline at end of file