백준 9466번 텀프로젝트

Jeongeun·2023년 9월 3일
0

백준

목록 보기
117/187

💊 내가 짠 코드는 메모리초과가 발생했다. 오래 고민해보았지만 결국 해결하지 못하고 다른 코드를 참고했다.
🎨참고코드

코드

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const T = +input.shift();
let done;
let visited;
let choice;
let answer = 0;

const dfs = (node) => {
  visited[node] = true;
  const selected = choice[node] - 1;
  if (!visited[selected]) dfs(selected);
  else if (!done[selected]) {
    //팀이 만들어 지는 경우임.
    for (let i = selected; i !== node; i = choice[i] - 1) {
      answer++;
    }
    answer++;
  }
  done[node] = true;
};

for (let t = 0; t < T; t++) {
  const num = +input[t * 2];
  choice = input[t * 2 + 1].split(" ").map(Number);
  done = new Array(num).fill(false);
  visited = new Array(num).fill(false);
  answer = 0;

  for (let i = 0; i < num; i++) {
    if (!visited[i]) {
      dfs(i);
    }
  }
  console.log(num - answer);
}

0개의 댓글