[프로그래머스] 타겟 넘버

2022. 7. 23. 17:23TIL💡/Algorithms

https://school.programmers.co.kr/learn/courses/30/lessons/43165

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

요즘 어려운 알고리즘을 도전하면서 오히려 기본기를 놓치는 기분이랄까...

그래서 DFS를 다시 해보았다. 끝까지 n개의 숫자를 탐색하면서 풀어야 한다.

void dfs(vector<int> &numbers, int idx, int value) {
    if(idx == sz) {
        if(value == target_g) {
            answer++;
        }
        return;
    }
    
    int num = numbers[idx];
    value += num;
    dfs(numbers, idx + 1, value);
    value -= 2 * num;
    dfs(numbers, idx + 1, value);
    
}

여기서 실수할 뻔한 게 numbers[idx]를 방문해 숫자를 value에 반영하는 것을 for문 안으로 넣어서 다음 숫자로 건너뛸 수 있도록 하는 것이 가장 큰 실수였다!!! 제발... DFS / BFS에서만큼은 실수하지 말자...