DFS 를 이용하여 Depth 만큼 파고 들면서 - , + 를 탐색하였다.
최종 Depth에 도착했을 시 target 과 결괏값을비교하여 answer 를 1씩 더하는 식으로 풀어내었다.
import java.util.*;
class Solution {
public int answer = 0, end;
public boolean[] isVisited;
public int solution(int[] numbers, int target) {
isVisited = new boolean[numbers.length];
end = target;
DFS(0,numbers,0);
return answer;
}
public void DFS(int depth, int[] numbers, int num){
if(depth == numbers.length){
if(end == num)
answer++;
return;
}
isVisited[depth]=true;
DFS(depth+1,numbers,num+numbers[depth]);
DFS(depth+1,numbers,num-numbers[depth]);
isVisited[depth]=false;
}
}
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 2. 게임 맵 최단거리 (0) | 2024.06.23 |
---|---|
Lv 2. pK진수에서 소수 개수 구하기 (0) | 2024.06.22 |
Lv 2. 전화번호 목록 (0) | 2024.06.19 |
Lv 2. [1차] 뉴스 클러스터링 (0) | 2024.06.18 |
Lv 2. 피로도 (0) | 2024.06.17 |