https://programmers.co.kr/learn/courses/30/lessons/43165?language=java
class Solution {
static int answer;
public int solution(int[] numbers, int target) {
answer = 0;
dfs(0, 0, 0, numbers.length, numbers, target);
return answer;
}
void dfs(int cnt, int start, int res, int N, int[] numbers, int target){
if (cnt==N){
if (res==target){
answer++;
}
return;
}
for (int i=start; i<N;i++){
dfs(cnt+1, i+1, res+numbers[i], N, numbers, target);
dfs(cnt+1, i+1, res-numbers[i], N, numbers, target);
}
}
}
완탐 문제
경우의 수는 더하거나 빼거나 두 가지로 각각의 경우를 dfs를 돌려 모두 탐색한다.
'알고리즘 > Programmers' 카테고리의 다른 글
자바 | 프로그래머스 | 단어변환 (1) | 2021.05.28 |
---|---|
자바 | 프로그래머스 | 네트워크 (0) | 2021.05.28 |
파이썬 | 프로그래머스 | 오픈채팅방 (0) | 2021.05.19 |
파이썬 | 프로그래머스 | 더 맵게 (0) | 2020.12.27 |