Java
class Solution {
private int[] numbers;
private int len;
public int solution(int[] numbers, int target) {
this.len = numbers.length;
this.numbers = numbers;
return dfs(target, 0);
}
public int dfs(int target, int idx) {
if (idx == len && target == 0) {
return 1;
} else if (idx==len) {
return 0;
}
return dfs(target-numbers[idx], idx+1) + dfs(target+numbers[idx], idx+1);
}
}
Python
def solution(numbers, target):
length = len(numbers)
def target_if_zero(target):
if target == 0 : return 1
else : return 0
def dfs(target, n):
if n == length :
return target_if_zero(target)
return dfs(target-numbers[n], n+1) + dfs(target+numbers[n], n+1)
return dfs(target, 0)
예전에 답을 보고 이해만 했던 문제였다. dfs를 공부했음에도 바로 풀리지 않았다. 이번에는 그래도 나름 머리를 굴려보면서 스스로 풀어보았다.
문제를 해결하기 전에 머리를 싸맬 땐, 진짜 내 뇌가 원망스러웠는데, 일단 풀고 나니까 별 거 아니군 하는 생각이 든다.ㅋㅋ
파이썬 문제를 풀고 나서, 자바지기님(요즘 플레이그라운드 tdd 강의도 들으려고 노력 중)이 if문을 길게 쓰지 말라고 조언해주셨던 게 기억이 났다.
그래서 타겟_이프_제로라는 함수를 따로 만들어 보았다. 과연... 일단 강의에서 알려준 건 최대한 따라해볼 생각.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[해시] 베스트앨범 (0) | 2021.12.16 |
---|---|
[힙(Heap)] 더 맵게 (0) | 2021.12.16 |
[해시] 위장 (0) | 2021.09.24 |
[해시] 전화번호 목록 (0) | 2021.09.16 |
[해시] 완주하지 못한 선수 (0) | 2021.09.15 |