티스토리 뷰
function getDirections(matrix, from, to) {
const queue = [from]; // 큐를 초기화하고 시작 정점을 삽입
const visited = new Array(matrix.lengt).fill(false); // 방문 여부를 저장할 배열
while (queue.length > 0) {
const node = queue.shift(); // 큐에서 노드를 추출
if (node === to) return true; // 목적지에 도착하면 true 반환
visited[node] = true; // 방문한 노드는 visited 배열에 표시
for (let i = 0; i < matrix[node].length; i++) {
if (matrix[node][i] && !visited[i]) { // 인접한 노드 중 방문하지 않은 노드가 있으면 큐에 추가
queue.push(i);
}
}
}
return false; // 도착하지 못한 경우 false 반환
}
ex)
[
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1],
[0, 1, 0, 0],
],
0,
2
);
큐에 출발 지점 0을 삽입
visited= [false , false , false , false ] 생성
큐에서 0을 추출하고 , visited = [ true , false , false , false ] 로 변경
matrix[0][1]는 1이고 방문하지 않아서
queue에 추가하여 [1]이 된다.
큐에서 1을 추출하고 , visited = [true , true , false, false]로 변경
matrix[1][3]는 1이고 visited[3]는 false로 방문하지 않아서
queue에 추가하여 [3]이 된다.
큐에서 3을 추출하고 , visited = [true , true ,false , true]로 변경
matrix[3][1] , matrix[3][2]는1이고 visited[2]는 false로 방문하지 않아서
queue에 추가하여 [2]가 된다.
목적지에 도착해서 true로 반환된다.
'codestates > section4' 카테고리의 다른 글
과제 반응형 웹사이트 (0) | 2023.03.16 |
---|---|
Unit2 - [HTML/CSS] 심화 (0) | 2023.03.16 |
[DFS / BFS] 연결된 정점들 (0) | 2023.03.16 |
이진트리 후위 순회 (0) | 2023.03.15 |
Implementation Graph (0) | 2023.03.15 |