• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

section 9-2 경로탐색(DFS-인접행렬)

22.10.12 22:33 작성 조회수 128

0

안녕하세요! 강의 항상 잘 듣고 있습니다.

2차원 행렬 생성 시 두가지 방법으로 알고 있었는데 위에 graph는 정상적으로 나오는데 graph1은 [[0, 1, 1, 1, 1, 1]*n+1] 식으로 밖에 안나옴니다.

0으로 초기화 한 행렬은 같은 값이 나오는데 graph1은 왜 for문으로 인접행렬 생성 시 안되는지 궁금합니다

let graph = Array.from(Array(n + 1), () => Array(n + 1).fill(0));
let graph1 = Array(n + 1).fill(Array(n + 1).fill(0));

답변 1

답변을 작성해보세요.

1

안녕하세요^^

2차원 배열 생성시 Array.from은 정상으로 잘 나옵니다.

하지만 new Array(n) 로 2차원 배열을 만들면 0번 행이 그대로 복사되어 1번행, 2번행, n-1행을 만들어 버립니다. 그래서 0번행의 0열을 값을 5로 바꾸면 1번행 0열의 값, 2번행의 0열값, n-1행의 0열값 모두가 5가 되어 버립니다. 왜 그러는지는 저도 모릅니다. 그래서 저는 2차원 배열은 Array.from을 사용합니다.