class Solution {
static int answer, targetNum, numLen, arr[];
public int solution(int[] numbers, int target) {
arr = numbers;
numLen = numbers.length;
targetNum = target;
answer = 0;
dfs(0, 0);
return answer;
}
public void dfs(int cnt, int sum) {
if (cnt == numLen) {
if (sum == targetNum) answer++;
return;
}
dfs(cnt+1, sum + arr[cnt]);
dfs(cnt+1, sum - arr[cnt]);
}
}
처음에 무슨 이진트리 만들어서 dfs해보겠다고 array에다가 막 넣고 난리 치다가 결국 그냥 포기하고 스터디원들의 아이디어에 힌트를 얻어 간단히 짠 코드.
이렇게 간단한 문제를 이상하게 구현하겠다고 용을 쓰고 있었으니.. 에휴
재귀는 어차피 call stack 쌓는 거니까 dfs가 자연스럽게 구현되는 것을.. 정신 차리자
'온라인 저지 > 프로그래머스' 카테고리의 다른 글
[PGS/JavaScript] 이분탐색 - 입국심사 (0) | 2022.02.04 |
---|---|
[PGS/Python] 가장 큰 수 (0) | 2021.11.06 |
댓글