ํฐ์คํ ๋ฆฌ ๋ทฐ
๊ทธ๋ํ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ์ด์ด ์์๋ ์ค์_๋ฐฐ์ด ๊ฐ์ฒด์ ๋ํ ๊ณ ์ฐฐ
choi95 2022. 4. 2. 12:23๋ฌธ์
https://github.com/choi2601/LeetCode-ProblemSolving/tree/main/797-all-paths-from-source-to-target
๋ฆฟ์ฝ๋์์ ์ธ์ ํ๋ ฌ ๊ทธ๋ํ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ์ด์ด ์๋ ์ค์๋ก ์ธํด ์ค๋ ์๊ฐ ๊ณ ๋ฏผ์ ํ๋ค.
๋ค์๋ ๊ฐ์ ์ค์๋ฅผ ํ์ง ์๊ธฐ ์ํด ํด๋น ๋ถ๋ถ์ ์งง๊ฒ ํฌ์คํ ํ๊ณ ์ ํ๋ค.
๋ฐฐ์ด ๊ฐ์ฒด
const answer = [];
const n = graph.length;
const nodes = Array.from(Array(n), () => Array());
const ch = Array.from({length: n}, () => 0);
for(let i = 0; i < graph.length; i++) {
const route = graph[i];
for(let j = 0; j < route.length; j++) {
const path = route[j];
nodes[i].push(path);
}
}
const tmp = [0];
function DFS(v) {
if(v === n - 1) {
answer.push(tmp);
return;
}
else {
for(let i = 0; i < nodes[v].length; i++) {
if(ch[nodes[v][i]] === 0) {
ch[nodes[v][i]] = 1;
tmp.push(nodes[v][i]);
DFS(nodes[v][i]);
ch[nodes[v][i]] = 0;
tmp.pop();
}
}
}
}
ch[0] = 1;
DFS(0);
return answer;
ํด๋น ์ฝ๋๋ ์ฒ์์ ์์ฑํ ์ฝ๋๋ก์, ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ ์ ๋ต์ด ํ๋ฆฌ๊ฒ ๋์๋ค.
[[0],[0]]
์ง๋์จ ๊ฒฝ๋ก๋ฅผ ์์ ์ ์ฅํ๋ ๋ณ์์ธ tmp๋ฅผ ์ฝ์์ฐฝ์ ์ฐ์ด๋ดค์ ๋๋ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก ํ์ ์ด ๋์ค๋๋ฐ, ๊ฒฝ๋ก๊ฐ ๋ด๊ธด ์ ๋ต ๋ณ์๋ฅผ ๋ฐํํ๋ฉด ์์ ๊ฐ์ด ์ด๊ธฐ ๊ฒฝ๋ก์ธ 0๋ง์ ๋ด์ ๋ฐฐ์ด์ด ๋์๋ค.
์ค๋ ์๊ฐ ๊ณ ๋ฏผ์ ํด๋ณธ ๊ฒฐ๊ณผ, ๋ฐฐ์ด์ด ๊ฐ์ฒด ๋ผ๋ ์ฌ์ค์ ๊ธฐ์ตํด ๋๋ค.
๋ฐฐ์ด์ ๊ฐ์ฒด๋ก์, ์ฐธ์กฐ๊ฐ์ ์ํด ๊ฐ(value)๊ฐ ๊ณต์ ๋๊ธฐ ๋๋ฌธ์, ๋ค์ ๊ฒฝ๋ก๋ฅผ ๋๋์์์ ๋ ์ด์ ํ์ ์ ์์ ๊ธฐ ์ํ tmp.pop() ์ฐ์ฐ์ด ์ต์ข ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น ๊ฒ ์ด์๋ค.
์ด์ ์๋ณธ ๋ฐฐ์ด์ ์ ๋ต ๋ณ์์ ๋ฐ๋ก push()ํ๋ ๊ฒ์ด ์๋, Array.prototype.slice()๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณธ ๋ฐฐ์ด์ ๊น์ ๋ณต์ฌํ ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ์ง๋ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์ ๋ต ๋ณ์์ push() ํด์ค์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฌ์ฌํด์ ๋ง๋ค์ด ๋ณธ Toggle Switch๐ (0) | 2022.04.16 |
---|---|
2022 Dev-Matching ํ ์คํธ ํ๊ณ (0) | 2022.03.12 |
์ฟผ๋ฆฌ ๋ฌธ์์ด ์ธ์ฝ๋ฉํ๊ธฐ(ํ๊ธ ์ฃผ์ ๊นจ์ง ํ์)_encodeURI (0) | 2021.12.24 |
์ซ์๋ฅผ ์ํ ๋ฌธ์์ด๋ก ์์ _Array.prototype.toLocaleString (0) | 2021.12.24 |
๋(null) ๋ณํฉ ์ฐ์ฐ์๋ก ๋ฆฌํฉํ ๋ง (0) | 2021.10.10 |