https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
기억해야할점들
첫번쨰, idx로 더하는 위치를 계속해서 가져가야합니다.
그래야만 중복해서 더하지않고 모두 각각 1번씩 더합니다.
두번째, dfs를 2가지 갈래로 나눕니다.
+와 - 밖에 없으니 그 두가지만 계산해주면 됩니다.
코드입니다.
import java.util.*; class Solution { int Target; int[] Numbers; int answer = 0; public int solution(int[] numbers, int target) { Target = target; Numbers = numbers; dfs(0, 0, 0); return answer; } void dfs(int idx, int cnt, int sum){ if(cnt == Numbers.length){ if(Target == sum){ // System.out.println(sum); answer += 1; } return ; } for(int i=idx;i<Numbers.length;i++){ dfs(i+1, cnt + 1, sum + Numbers[i]); dfs(i+1, cnt + 1, sum - Numbers[i]); } } }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]프린터 - 큐 + arraylist (0) | 2023.02.15 |
---|---|
[프로그래머스]게임 맵 최단거리 - BFS (0) | 2023.02.07 |
[프로그래머스]등굣길 - DP (0) | 2023.02.07 |
[프로그래머스]올바른 괄호 - 스택 (0) | 2023.02.03 |
[프로그래머스]기능개발- 구현 (0) | 2023.02.02 |