Skip to content

Commit 97fe1fe

Browse files
authored
[20250812] BOJ / G5 / 숫자고르기 / 이인희
1 parent d89cd36 commit 97fe1fe

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.StringTokenizer;
6+
import java.util.ArrayList;
7+
import java.util.Collections;
8+
9+
public class Main {
10+
private static BufferedReader br;
11+
private static StringTokenizer st;
12+
private static int N;
13+
private static int[] arr;
14+
private static boolean[] visited;
15+
private static boolean[] onPath;
16+
private static ArrayList<Integer> result;
17+
18+
public static void main(String[] args) throws IOException {
19+
br = new BufferedReader(new InputStreamReader(System.in));
20+
N = Integer.parseInt(br.readLine().trim());
21+
arr = new int[N + 1];
22+
for (int i = 1; i <= N; i++) {
23+
arr[i] = Integer.parseInt(br.readLine().trim());
24+
}
25+
visited = new boolean[N + 1];
26+
result = new ArrayList<>();
27+
for (int i = 1; i <= N; i++) {
28+
onPath = new boolean[N + 1];
29+
dfs(i, i);
30+
}
31+
32+
Collections.sort(result);
33+
System.out.println(result.size());
34+
for (int num : result) {
35+
System.out.println(num);
36+
}
37+
38+
}
39+
40+
private static void dfs(int start, int current) {
41+
if (onPath[current]) {
42+
if (current == start) {
43+
result.add(start);
44+
}
45+
return;
46+
}
47+
onPath[current] = true;
48+
int next = arr[current];
49+
dfs(start, next);
50+
onPath[current] = false;
51+
}
52+
}
53+
```

0 commit comments

Comments
 (0)