자료구료 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;
}