Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section08 - 14 - ์กฐํ•ฉ ๊ตฌํ•˜๊ธฐ

YWTechIT 2021. 9. 30. 14:30
728x90

๐Ÿ“ section08 - 14 - ์กฐํ•ฉ ๊ตฌํ•˜๊ธฐ

1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ ํžŒ ๊ตฌ์Šฌ์ด ์žˆ๋‹ค. ์ด ์ค‘ M๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”

 

// ์ž…๋ ฅ
4 2

// ์ถœ๋ ฅ
1 2
1 3
1 4
2 3
2 4
3 4
6

 

์กฐํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ธ๋ฐ, ์ด์ „์— ๋ฐฐ์› ๋˜ ์ˆœ์—ด๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด์•ผ ํ•œ๋‹ค. ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ˆœ์—ด์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋ฐฐ์› ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ visited ๋ฐฐ์—ด๋กœ ์žฌ๊ท€๊ฐ€ ๋Œ์•„์˜ฌ ๋•Œ visited[i]=0์„ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ’€ ์ˆ˜ ์—†๊ณ  ๋Œ€์‹  ๋ฐ˜๋ณต๋ฌธ์˜ i๊ฐ’์„ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ i+1์„ ๊ณ„์† ๋„˜๊ฒจ์ค˜์•ผ ํ•œ๋‹ค. arr๊ฐ’์ด ๋”ฐ๋กœ ์ฃผ์–ด์ ธ์žˆ์œผ๋ฉด i๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋Š” arr์ด ์ฃผ์–ด์ ธ ์žˆ์ง€ ์•Š๊ณ  ํ˜„์žฌ ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ s ์ธ์ž๋Š” 1๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๋„˜๊ธด๋‹ค.

 

 

728x90

 

let n = 4;
let m = 2;

console.log(solution(n, m));

function solution(n, m){
  let arr = Array.from({length: m}, () => 0);
  let answer = [];

  function DFS(L, S){
    if (L === m){
      answer.push(arr.slice());
    }else{  
      for (let i=S; i<=n; i++){
        arr[L] = i;
        DFS(L+1, i+1);
      }
    }
  }

  DFS(0, 1);
  return answer;
}

๐Ÿ‘‰๐Ÿฝ [ [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 3 ], [ 2, 4 ], [ 3, 4 ] ]
๋ฐ˜์‘ํ˜•