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 ] ]
๋ฐ์ํ
๋๊ธ