인접 행렬 matrix

개발(공부) 자국·2021년 5월 16일
0

자료구료 graph 는 지도나 서로 연결되는 자료의 구조를 파악하는데

유용한 자료구조 형태중 하나다.

두 정점 간에 직접 연결되어 있어 인접한 정점들을 그릴 때

인접한 구조를 행렬로 표현한다는 것을 알게 되었다.

인접한 정점간의 연결을 표현 하는 방법은 인접리스트와 인접 행렬이 있다.

그 중 인접 행렬(matrix)를 만드는 코드를 생각하다보니

조금 더 짧게 만들 수 있는 방법을 생각하게 되고

이게 지금까지의 생각이 기록이다.

let data = [
  [0,2],
  [1,3],
  [3,1]
];

1. 
function makeMatrix(data) {
  
  let maxNum = 0; //   최대값 비교해서 재할당 할 곳
  
  for (let el of data) { 
    for (let i = 0; i < el.length; i++) {
      if (el[i] > maxNum) {
        maxNum = el[i];
      }
    }
  } // 정사각 행렬을 만들기 위해 주어진 자료의 최대인덱스를 구함
  
  let matrix = [];
  for (let i = 0; i < maxNum + 1; i++) {
    matrix[i] = new Array(maxNum + 1)
  } // 최대 값 + 1 의 크기대로 행렬을 반복문으로 생성
  
  for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix.length; j++) {
      matrix[i][j] = 0;
    }
  } // 그 자료 안에 0을 할당
  
  return matrix;
}
  


2. 
function makeMatrix(data) {
  
  let maxNum = 0; //   최대값 비교해서 재할당 할 곳
  
  for (let el of data) { 
    for (let i = 0; i < el.length; i++) {
      if (el[i] > maxNum) {
        maxNum = el[i];
      }
    }
  } // 정사각 행렬을 만들기 위해 주어진 자료의 최대인덱스를 구함
  
  let matrix = [];
  for (let i = 0; i < maxNum + 1; i++) {
    matrix[i] = new Array(maxNum + 1).fill(0);
  } // 최대 값 + 1 의 크기대로 행렬을 반복문으로 생성하면서 0을 할당
 
  
  return matrix;
}



3. 
function makeMatrix(data) {
  
  let maxNum = 0; //   최대값 비교해서 재할당 할 곳
  
  for (let i = 0; i < data.length; i++) {
    const currentMax = Math.max(...data[i]);
    currentMax > maxNum ? maxNum = currentMax : null;
  } // 정사각 행렬을 만들기 위해 주어진 자료의 최대인덱스를 구함
  
  let matrix = [];
  for (let i = 0; i < maxNum + 1; i++) {
    matrix[i] = new Array(maxNum + 1).fill(0);
  } // 최대 값 + 1 의 크기대로 행렬을 반복문으로 생성하면서 0을 할당
 
  
  return matrix;
}



4. 
function makeMatrix(data) {
  
  let maxNum = 0; //   최대값 비교해서 재할당 할 곳
  
  for (let i = 0; i < data.length; i++) {
    const currentMax = Math.max(...data[i]);
    currentMax > maxNum ? maxNum = currentMax : null;
  } // 정사각 행렬을 만들기 위해 주어진 자료의 최대인덱스를 구함
  
  let matrix = new Array(maxNum + 1).fill(0).map((el) => {
    return el = new Array(maxNum + 1).fill(0);
  } // 최대 값 + 1 의 크기대로 행렬을 반복문으로 생성하면서 0을 할당
 
  return matrix;
}
profile
기록을 중요하게 생각하는 사람입니다. 학습한 내용을 정리한 것이라 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 언제든 말씀해 주시기 바랍니다.

0개의 댓글