์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 43165] ํƒ€๊ฒŸ ๋„˜๋ฒ„ (Javascript)

์€์ง„ 2021. 8. 3. 12:55

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๋ฌธ์ œ๋งํฌ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 43165] ํƒ€๊ฒŸ ๋„˜๋ฒ„ (Javascript)
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค


โœ๏ธIdea Sketch

2021-07-13

1. ๋ฌธ์ œ ์ดํ•ด

  • ๋”ํ•˜๊ธฐ ๋นผ๊ธฐ ๋‘๊ฐ€์ง€ ์—ฐ์‚ฐ

2. ๋กœ์ง

  • DFS
  • numbers์˜ ์›์†Œ๋ฅผ ๋”ํ•˜๋Š” ๊ฒฝ์šฐ or ๋นผ๋Š” ๊ฒฝ์šฐ

3. DFS

  • ์ข…๋ฃŒ์กฐ๊ฑด : v === numbers.length ์ธ ๊ฒฝ์šฐ
sum += numbers[v];  // v๋ฒˆ์งธ ์›์†Œ๋ฅผ ๋”ํ•˜๋Š” ๊ฒฝ์šฐ
DFS(v+1);
sum -= numbers[v]*2;  // v๋ฒˆ์งธ ์›์†Œ๋ฃฐ ๋นผ๋Š” ๊ฒฝ์šฐ
DFS(v+1);
sum += numbers[v];  // ์›๋ณต


โœ๏ธ์†Œ์Šค์ฝ”๋“œ

2021-07-13 ์ •ํ™•์„ฑ ํ†ต๊ณผ

function solution(numbers, target) {
  let cnt = 0;
  let sum = 0;

  function DFS(v) {
    if (v === numbers.length) {
      if (sum === target) cnt++;
      return;
    }
    sum += numbers[v];
    DFS(v+1);
    sum -= numbers[v]*2;
    DFS(v+1);
    sum += numbers[v];
  }
  DFS(0);
  return cnt;
}


โœ๏ธ๋ช…๋‹ต

DFS getAnswer() ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— sum์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๋” ์ง๊ด€์ 

function solution(numbers, target) {
    let answer = 0;
    getAnswer(0,0);
    function getAnswer(x, value) {  // sum ๋Œ€์‹  value ์‚ฌ์šฉ
        if(x<numbers.length){
            getAnswer(x+1,value + numbers[x]);
            getAnswer(x+1,value - numbers[x]);
        } else{
            if(value === target){
                answer++
            }
        }
    }
    return answer;
}