๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ํƒ€๊ฒŸ ๋„˜๋ฒ„ (43165)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํƒ€๊ฒŸ ๋„˜๋ฒ„

n๊ฐœ์˜ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์ˆ˜๋“ค์„ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ ์ ˆํžˆ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [1, 1, 1, 1, 1]๋กœ ์ˆซ์ž 3์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹ค์„ฏ ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜

programmers.co.kr

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์™„์ „ ํƒ์ƒ‰ ๋ฌธ์ œ๋กœ dfs(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰) ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์ด [1,1,1,1,1] ์ผ๋•Œ
1, 1, 1, 1, 1
1, 1, 1, 1, -1
1, 1, 1, -1, 1
1, 1, 1, -1, -1
1, 1, -1, 1, 1
1, 1, -1, 1, -1
1, 1, -1, -1, 1
1, 1, -1, -1, -1
... ์ด๋Ÿฐ ๋ฐฉ์‹์˜ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ์ง„ํ–‰๋œ๋‹ค.

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ณธ ์˜ˆ์ œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„๋งŒํ•œ ๋ฌธ์ œ์˜€๋‹ค.

 

function solution(numbers, target) {
    let answer = 0;
    
    const dfs = (level, result) => {
        if(level === numbers.length){
            if(result === target) answer += 1;
            return;
        }
        
        dfs(level + 1, result + numbers[level])
        dfs(level + 1, result - numbers[level])
    }
    
    dfs(0,0);

    return answer;
}