문제
제한사항
문제풀이
class Solution {
static int answer;
public void dfs(int[] numbers,int target,int idx,int sum){
if(idx == numbers.length){
if(sum == target) answer++;
return;
}
sum+=numbers[idx];
dfs(numbers,target,idx+1,sum);
sum-=numbers[idx]*2;
dfs(numbers,target,idx+1,sum);
}
public int solution(int[] numbers, int target) {
answer = 0;
dfs(numbers,target,0,0);
return answer;
}
}
※ 내 생각
이 문제는 DFS를 이용하는 문제입니다.
각각의 값에 대해서 더해주고,
빼주는 과정을 DFS를 이용해서 구현하면 됩니다.
DFS에서 numbers에 대한 값을 한번 더했으므로,
*2 만큼 빼줘야 그 값에 대해 뺀 값으로 처리가 가능합니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 정수 삼각형(자바) / DP (0) | 2021.10.30 |
---|---|
[프로그래머스] 문자열 압축(자바) / 문자열 (0) | 2021.10.25 |
[프로그래머스] 다단계 칫솔 판매(자바) / 자료구조 & 구현 (0) | 2021.10.17 |
[프로그래머스] 행렬 테두리 회전하기 ( 자바) / 구현 (0) | 2021.10.16 |
[프로그래머스] 로또의 최고 순위와 최저 순위(자바) / 구현 (0) | 2021.10.15 |