내 코드
package com.company;
import java.io.*;
import java.util.*;
public class Main {
static int N;
static boolean[] visited;
static int[] arr;
static HashSet<Integer> set = new HashSet<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new int[N + 1];
for (int i = 1; i <= N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
visited = new boolean[N + 1];
for (int i = 1; i <= N; i++) {
Arrays.fill(visited, false);
dfs(i, i, 1);
}
System.out.println(set.size());
ArrayList<Integer> list = new ArrayList<>(set);
Collections.sort(list);
for (int i : list) {
System.out.println(i);
}
}
static void dfs(int first, int index, int count) {
if (visited[index]) {
return;
}
visited[index] = true;
if (arr[index] == first) {
for (int i = 0; i <= N; i++) {
if (visited[i])
set.add(i);
}
return;
}
dfs(first, arr[index], count + 1);
}
}
'코딩테스트 > [백준] 코딩테스트 연습' 카테고리의 다른 글
공약수 - 2436번 (0) | 2021.11.16 |
---|---|
수고르기 - 2230번 (0) | 2021.11.16 |
문자열 잘라내기 - 2866번 (0) | 2021.11.09 |
줄어들지 않아 - 2688번 (0) | 2021.11.09 |
팀 배정 - 18768번 (0) | 2021.11.08 |