Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํƒ€๊ฒŸ ๋„˜๋ฒ„ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํƒ€๊ฒŸ ๋„˜๋ฒ„

Jieunny 2023. 3. 9. 16:22

๐Ÿ“Œ  ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

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

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers, ํƒ€๊ฒŸ ๋„˜๋ฒ„ target์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์ˆซ์ž๋ฅผ ์ ์ ˆํžˆ ๋”ํ•˜๊ณ  ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋Š” 2๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ ์ˆซ์ž๋Š” 1 ์ด์ƒ 50 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ํƒ€๊ฒŸ ๋„˜๋ฒ„๋Š” 1 ์ด์ƒ 1000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

๐Ÿ’ก  ์•„์ด๋””์–ด

DFS ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊นŒ์ง„ ์•Œ๊ฒ ๋Š”๋ฐ..์–ด๋–ป๊ฒŒ ์งœ์•ผ ํ• ์ง€ ๋ชฐ๋ผ์„œ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ตฌ๊ธ€๋งํ•ด๋ดค๋‹คใ… 

์—ฌ๊ธฐ์„œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์จ๋†“์œผ์…”์„œ ์ฐธ๊ณ ํ–ˆ๋‹ค.

์ฝ์œผ๋ฉด ์ดํ•ด๊ฐ€ ๋˜๋Š”๋ฐ ์™œ ๊ตฌํ˜„์€ ๋ชปํ• ๊นŒ๐Ÿ˜ญ

๐Ÿ“š https://jjnooys.medium.com/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%83%80%EA%B2%9F-%EB%84%98%EB%B2%84-javascript-1d7983d423b5

 

โœ๏ธ  ํ’€์ด

function solution(numbers, target) {
  var answer = 0;
  dfs(0, 0);

  function dfs(index, sum){
    if(numbers.length === index){
      if(target === sum) answer++;
      return 0;
    }
    //1
    dfs(index + 1, sum + numbers[index]);
    
    //2
    dfs(index + 1, sum - numbers[index]);
  }

  return answer;
}