본문 바로가기
Algorithm/프로그래머스

[깊이/너비 우선 탐색(DFS/BFS)] 타겟 넘버

by seeker00 2021. 12. 7.

dfs-타겟 넘버

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