https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
재귀 알고리즘을 활용하여 아주 쉽게 풀수 있는 문제이다.
※주의 해야할 점
- 순서를 바꾸면서 계산하지 않기 때문에 계산의 시작점을 다르게 하거나 뒤로 돌아가는 경우를 구할 필요 없이 선형적으로 뻗어 나가면 된다.
- 선형적으로 앞으로만 뻗어나가면서 계산하면 되기 때문에 방문여부를 따지는 Visit 배열은 필요없다.
<코드>
import java.util.*;
class Solution {
static int count =0;
public int solution(int[] numbers, int target) {
int answer = 0;
dfs(numbers,target,0,0);
answer=count;
return answer;
}
public static void dfs(int[] numbers,int target,int value,int start){
if(start==numbers.length){
if(value==target){
count++;
}
return;
}
dfs(numbers,target,value+numbers[start],start+1);
dfs(numbers,target,value-numbers[start],start+1);
}
}
'알고리즘 > DFS,BFS' 카테고리의 다른 글
프로그래머스 - 전력망을 둘로 나누기[Java][BFS] (0) | 2025.02.22 |
---|---|
프로그래머스 - 무인도 여행[Java] (0) | 2025.02.15 |
프로그래머스 - 여행경로[Java] (1) | 2025.02.13 |
프로그래머스 - 네트워크[Java] (2) | 2025.02.08 |
프로그래머스 - 게임 맵 최단거리(Java) (0) | 2025.01.23 |