Skip to content

Commit 40eab3b

Browse files
authored
[20251027] BOJ / G5 / 숫자고르기 / 이종환
1 parent 0b39e0e commit 40eab3b

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.Collections;
8+
import java.util.HashSet;
9+
import java.util.PriorityQueue;
10+
import java.util.StringTokenizer;
11+
12+
public class Main {
13+
static StringBuilder sb = new StringBuilder();
14+
static int totalNum,left;
15+
static int[] arr,numCnt;
16+
static boolean[] isDead;
17+
18+
public static void main(String[] args) throws IOException {
19+
init();
20+
process();
21+
print();
22+
}
23+
24+
private static void init() throws IOException{
25+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
26+
totalNum = Integer.parseInt(br.readLine());
27+
left= totalNum;
28+
arr = new int[totalNum+1];
29+
numCnt = new int[totalNum+1];
30+
isDead = new boolean[totalNum+1];
31+
32+
for (int i = 1; i <= totalNum; i++) {
33+
arr[i] = Integer.parseInt(br.readLine());
34+
numCnt[arr[i]]++;
35+
}
36+
}
37+
38+
private static void process() {
39+
boolean isEnd = false;
40+
while(!isEnd) {
41+
isEnd = true;
42+
for (int i = 1; i <= totalNum; i++) {
43+
if (isDead[i]) continue;
44+
if (numCnt[i] == 0) {
45+
numCnt[arr[i]]--;
46+
isEnd = false;
47+
left--;
48+
isDead[i] = true;
49+
}
50+
}
51+
}
52+
53+
sb.append(left);
54+
for (int i = 1; i<= totalNum; i++) {
55+
if(!isDead[i]) sb.append("\n").append(i);
56+
}
57+
58+
}
59+
60+
61+
62+
private static void print() {
63+
System.out.println(sb.toString());
64+
}
65+
}
66+
67+
68+
```

0 commit comments

Comments
 (0)