코딩테스트

[재풀이/릿코드] 62. Unique Paths

_서리__ 2023. 5. 2. 21:34
var uniquePaths = function(m, n) {
  let map = Array.from({ length: m }, () => new Array(n).fill(1));
  let low = 1
  let column = 1;
  while(low<m){
    while(column<n){
      map[low][column] = map[low-1][column]+map[low][column-1]
      column++;
    }
    low++;
    column = 1;
  }
  return map[m-1][n-1]
};

여기서 치명적인 실수를 하나 했는데,

 

 let map = new Array(m).fill(new Array(n).fill(1))

map을 이렇게 작성했다는 것이다.

이렇게 이차원 배열을 만들면 메모리에 한번만 할당되고, 그 배열의 참조값만 채워지기 때문에 while을 돌릴때마다 값이 덮어씌워졌다!!! 각행의 배열은 동일한 객체를 참조하기 때문에 한행의 값을 변경하면 다른 모든행도 그 변경을 따르게 된다.

때문에 이런경우에 2차원배열을 이렇게 작성하면 안된다.!!