// function getDirections(matrix, from, to) {
// // ๋ฐฉ๋ฌธํ๋์ง ํ์ธํ๋ ๋ฐฐ์ด
// const map = matrix.map(a => [...a].fill(0)); // ๋ฐฉ๋ฌธ ์ฌ๋ถ
// // ์ฌ๊ท๋ฅผ ๋๋ฆฌ๋ฉด์ ๊ธธ์ด ์๋์ง ํ์ธํ๋ ํจ์
// const canGetDirections = (matrix, from, to) => {
// if(matrix[from][to]) return true;
// // [0, 1, 0, 0]
// // [0, 1, 0, 0] from = 0, to = 2 0๋ถํฐ ๋ค๋ฅธ ๋
ธ๋๊น์ง ๊ฐ๋ ๊ธธ์ ํ์ธ ํ ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ธธ์ ๊ฐ๋ณธ์ ์ด ์๋
// for (let i = 0; i < matrix[from].length; i++) {
// if(i === from || i === to) continue;
// // from ์ด ๋ฐ๋๋ค.
// // ๊ธธ์ด ์๊ณ , ๋ฐฉ๋ฌดํ์ ์ด ์์ผ๋ฉด ๊ฑฐ๊ธฐ๋ก ๊ฐ๊ฒ ๋ค.
// if(matrix[from][i] && !map[from][i]) { //๊ฐ ์ ์๋ ๊ธธ์ด ์๋
// // ๊ฑฐ๊ธฐ๋ก ๊ฐ๋ฉด ์ฌ๊ธฐ์๋ถํฐ ๋ค์ ์ฐพ๋๋ค ๋ชฉ์ ์ง๊น์ง ๊ฐ ์ ์๋ ๊ธธ์ด ์๋
// map[from][i] = 1; // ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํด์ค๊ฑฐ
// if(canGetDirections(matrix, i, to)) return true; // ๊ฐ ์ ์๋ ๊ธธ๋ถํฐ ๋ค์ ์ฐพ๋๋ค.
// }
// }
// return false;
// }
// return canGetDirections(matrix, from, to);
// }
// const a = [
// [0, 1, 0, 0],
// [0, 0, 1, 0],
// [0, 0, 0, 1],
// [0, 1, 0, 0]
// ]
// a[0][2] === 1;
// 0 -> 1 -> 2 truen;
// 1 ์ด๋ ์๋๋
function getDirections(matrix, from, to, visited = []) {
// if(from === to) {
// return true
// }
if(matrix[from][to] === 1) return true;
visited[from] = true; // ํ์ฌ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์์ ํ์
// ๊ฐ์ ์ ์ผ๋ก ์ด์ด์ง ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ผํจ
for (let i = 0; i < matrix[from].length; i++) {
if(matrix[from][i] === 1 && !visited[i]) {
if(getDirections(matrix, i, to, visited)) {
return true
}
}
}
// ๋ฌดํ ๋ฃจํ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐ?
return false;
}