๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

DFS๋กœ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นŠ์ด๋ฅผ numbers์˜ ํฌ๊ธฐ๋งŒํผ ๋‚ด๋ ค ๊ฐ”์„ ๋•Œ, ์ด ๋•Œ๊นŒ์ง€์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์™€ target์ด ๊ฐ™์œผ๋ฉด answer++ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋”ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๋นผ๋Š” ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€๋งŒ ์žˆ์œผ๋ฏ€๋กœ 2๊ฐœ๋งŒ ์žฌ๊ท€๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋˜๊ฒ ๋„ค์š”.

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <vector>
using namespace std;

void DFS(const vector<int>& numbers, const int& target, int sum, int idx, int& answer) {
    if (idx == numbers.size()) {
        if (sum == target)
            answer++;
        return;
    }

    DFS(numbers, target, sum + numbers[idx], idx + 1, answer);
    DFS(numbers, target, sum - numbers[idx], idx + 1, answer);
}

int solution(vector<int> numbers, int target) {
    int answer = 0;
    DFS(numbers, target, 0, 0, answer);
    return answer;
}

 

 

728x90
๋ฐ˜์‘ํ˜•