๐ section08 - 8 - ์ค๋ณต์์ด ๊ตฌํ๊ธฐ
1๋ถํฐ N
๊น์ง ์ ํ ๊ตฌ์ฌ์ด ์๋๋ฐ, ์ค๋ณต์ ํ๋ฝํ์ฌ M
๋ฒ์ ๋ฝ์ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ถ๋ ฅํ๋ผ.
// ์
๋ ฅ
3 2
// ์ถ๋ ฅ
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
9
์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ค๋ณต์์ด์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ n*n
์ฆ, 9๊ฐ ๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ด๋ฐ ์ค๋ณต์์ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด for
๋ฌธ์ผ๋ก ํ๋ฉด ๋ ๊ฐ๋จํ์ง ์์๊น?
let n = 3;
let m = 2;
for (let i=1 ; i<=n; i++){
for (let j=1; j<=n; j++){
console.log(i, j)
}
}
๐๐ฝ
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
๋ฌผ๋ก , ์ง๊ธ๊ณผ ๊ฐ์ ์
๋ ฅ์์๋ ๋ต์ ์ ๋์จ๋ค. ๋ง์ฝ, m
์ด 3
์ผ๋(3๊ฐ ์ค 3๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์)๋ ์ด๋ป๊ฒ ๊ตฌํ ๊น? ๊ฒฐ๋ก ์ ์ผ๋ก ๋งํ๊ณ ์ถ์ ๊ฒ์ m
์ด ๋์ด๋ ๋๋ง๋ค ๋ฐ๋ณต๋ฌธ์ ๊ฐ์๋ ๋์ด๋์ผํ๋๋ฐ, ์ผ์ผ์ด m
๊ฐ์ฉ ๋ฐ๋ณต๋ฌธ์ ์์ฑํ๊ฒ ๋๋ฉด ์๋นํ ๋นํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋๋ค. ์ฝ๋ฉ ํ
์คํธ์ฒ๋ผ ์
๋ ฅ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์ด๋ ๊ฒ ํ๋์ฝ๋ฉ์ ํ ์๋ ์๋ค. ์ด๋ด ๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ m
๋ฒ ๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด ํธํ๊ฒ ๊ตฌํ ์ ์๋ค. m
๊ฐ์ด ๋ฐ๋๋ฉด m
๋ ๋ฒจ๋งํผ ์ฌ๊ท๋ฅผ ์ฌ์ฉํด ๊ตฌํ๋ฉด ๋๋ค.
// ํ๋์ฝ๋ฉ
let n = 3;
let m = 3;
for (let i=1 ; i<=n; i++){
for (let j=1; j<=n; j++){
for (let k=1; k<=n; k++){
console.log(i, j, k)
}
}
}
๐๐ฝ
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
์ฌ๊ท๋ก ํ ๋ ์ฃผ์ํ ์ ์ ์ฌ๊ท๋ก ๋๊ณ ๋์ ๋์จ arr
์ ๊ฐ์ด ๋ง์ง๋ง ๊ฐ๋ง ์ฐธ์กฐํ๋ฏ๋ก ์์๋ณต์ฌ(slice
)๋ฅผ ์ด์ฉํด answer
์ push
ํด์ฃผ์.
// ์ ๋ต
let n = 3;
let m = 2;
console.log(solution(n, m));
function solution(n, m){
let arr = Array.from({length: m}, () => 0);
let cnt=0;
let answer = [];
function DFS(L){
if (L === m){
answer.push(arr.slice());
cnt++;
}else{
for (let i=1; i<=n; i++){
arr[L] = i;
DFS(L+1)
}
}
}
DFS(0)
return [answer, cnt];
}
๋๊ธ