반응형
문제
https://www.acmicpc.net/problem/2668
풀이
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let [N, ...nums] = fs
.readFileSync(filePath)
.toString()
.trim()
.split("\n")
.map(Number);
const answer = [];
let ch = [];
function DFS(target, cur) {
if (ch[cur] === 0) {
ch[cur] = 1;
return DFS(target, nums[cur - 1]);
} else {
// 자신의 번호(시작 번호)로 돌아오는 사이클인 경우
if (cur === target) return true;
// 아닌 경우
return false;
}
}
for (let i = 1; i <= N; i++) {
ch = Array(N + 1).fill(0);
if (DFS(i, i)) answer.push(i);
}
console.log([answer.length, ...answer].join("\n"));
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[알고리즘/백준/13023] ABCDE(Node.js, BFS) (0) | 2023.08.24 |
---|---|
[알고리즘/백준/16234] 인구 이동(BFS, Node.js) (0) | 2023.08.23 |
[알고리즘/백준/17836] 공주님을 구해라!(BFS, Nodejs) (1) | 2023.07.04 |
[알고리즘/백준/13549] 숨바꼭질 3(BFS, 우선순위 큐, Nodejs) (0) | 2023.07.03 |
[알고리즘/백준/14501] 퇴사 (2) | 2023.06.22 |