PS/프로그래머스
[Javascript]2606번:바이러스
returnzero
2022. 6. 2. 20:05
let input= require('fs').readFileSync('./input.txt').toString().trim().split('\n');;
// console.log(input);
let index=Number(input[0]);
let adjacentMatrix=[];
for(let i=0; i<index;i++){
adjacentMatrix.push(new Array(index).fill(0));
}
for(let i=0; i<index;i++){
for(let j=0; j<index; j++){
if( i===j) adjacentMatrix[i][j]=1;
}
}
// console.log(adjacentMatrix)
// console.log(adjacentMatrix);
let k= Number(input[1])
for(let i=2; i<=k+1 ;i++){
let arr= input[i].split(' ').map(e=>Number(e));
a=arr[0];
b=arr[1];
adjacentMatrix[a-1][b-1]=1;
adjacentMatrix[b-1][a-1]=1;
}
// console.log(adjacentMatrix);
console.log( answer(adjacentMatrix,index))
function answer (matrix,index){
// width:7 height:7
let check=0;
let stack=[];
let visited= new Array(index).fill(0);
for(let i=1; i<index;i++){
if(matrix[i][0]&& visited[i]===0){
stack.push(i);
visited[i]=1;
}
}
while(stack.length){
let i= stack.pop();
for(let j=0; j<index;j++){
if((matrix[j][i]===1)&&(visited[j]===0)){
matrix[j][0]=1;
visited[j]=1;
stack.push(j);
}
}
}
for(let i=1; i<index;i++){
if(matrix[i][0]) check++;
}
// console.log(check);
return check
}
DFS인데 이제 visited가 필요한