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가 필요한