티스토리 뷰

codestates/section4

인접 행렬 길찾기

나아눙 2023. 3. 16. 10:12
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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함