방향이 있는 간선과 방향이 없는 간선들의 목록들을 받아 2차원 배열의 인접행렬을 반환하는 함수를 작성하세요.
각 간선은 3가지 정보를 담고 있습니다.
const matrix = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
];
let output1 = createMatrix([
[0, 3, "directed"],
[0, 2, "directed"],
[1, 3, "directed"],
[2, 1, "directed"],
]);
console.log(output1);
/**
* [
* [0, 0, 1, 1],
* [0, 0, 0, 1],
* [0, 1, 0, 0],
* [0, 0, 0, 0]
* ]
*/
let output2 = createMatrix([
[0, 2, "directed"],
[2, 4, "undirected"],
[1, 3, "undirected"],
[2, 1, "directed"],
]);
console.log(output2);
/**
* [
* [0, 0, 1, 0, 0],
* [0, 0, 0, 1, 0],
* [0, 1, 0, 0, 1],
* [0, 1, 0, 0, 0],
* [0, 0, 1, 0, 0],
* ]
*/
function createMatrix(edges) {
const arr = edges.flat().filter( x => typeof x === "number") // 숫자인타입을 빈배열을 만들어준다.
const max = Math.max(...arr); // 가장 높은 값을 소환한다.
let matrix = []
for(let i =0; i<=max; i++){
matrix.push(new Array(max +1).fill(0))
}
//좌표값 찾아서 값 바꾸기
for(let edge of edges){
matrix[edge[0]][edge[1]] =1;
if(edge[2] === 'undirected'){
matrix[edge[1]][edge[0]]=1
}
}
return matrix
// TODO: 여기에 코드를 작성합니다.
}