작성
·
170
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을 사용합니다.