728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]

📍 [코드]
class Solution {
public int solution(int[] numbers, int target) {
return dfs(numbers, target, 0, 0); // 0부터 시작
}
public int dfs(int[] numbers, int target, int idx, int sum) {
// 순회 완료 -> sum과 target 비교
if(idx == numbers.length) return sum == target ? 1 : 0;
// idx 더하거나 빼서 결과 확인
return dfs(numbers, target, idx+1, sum + numbers[idx])
+ dfs(numbers, target, idx+1, sum - numbers[idx]);
}
}
💡 접근법
- 0부터 시작하여 인덱스를 하나씩 늘리며 재귀 호출한다.
- 이때, 더하거나 빼서 결과 확인
- 즉, sum 값 (더하거나 뺀 결과 값)이 target과 ⭕️ 같으면 1,
- ❌ 같지 않으면 0 반환
✅ DFS 활용
💬 마무리
프로그래머스 level3 [네트워크] 문제를 푼 후라 좀 수월하게 풀 수 있었던 것 같다.
하지만, return을 할 시에 더하거나 뺀 값을 더하여 계산하는 법을 생각해내기까지는 좀 오래걸렸던 것 같다.
왜 level3이 아닌지 모르겠다ㅏ.. ㅎ
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 더 맵게 | 💡 우선순위 큐 활용 | Min Heap (6) | 2025.08.25 |
|---|---|
| [프로그래머스|JAVA] 게임 맵 최단거리 | ↔️ BFS 활용 | Queue 활용 (5) | 2025.08.25 |
| [프로그래머스|JAVA] 네트워크 | ↕️ DFS (깊이 우선 탐색) | 재귀적 방식 (0) | 2025.08.24 |
| [프로그래머스|JAVA] 제일 작은 수 제거하기 | 3️⃣가지 풀이법 | stream 및 예외 먼저 처리 등 💬 (0) | 2025.08.24 |
| [프로그래머스|JAVA] 문자열 내 마음대로 정렬하기 | Comparator 사용 ⭕️ | @Override 활용 | 풀이법 2️⃣가지 | 스트림 ⭕️❌ (0) | 2025.08.24 |
