Skip to content

Commit 59970bb

Browse files
committed
[Graph] baekjoon-21276
1 parent df45b94 commit 59970bb

File tree

4 files changed

+99
-0
lines changed

4 files changed

+99
-0
lines changed

โ€ŽREADME.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Seogeurim/Algorithm-practice)
55
![GitHub top language](https://img.shields.io/github/languages/top/Seogeurim/Algorithm-practice?color=yellow&logo=Java)
66

7+
> Commit ์ˆ˜ โ‰… ํ‘ผ ๋ฌธ์ œ์˜ ์ˆ˜
8+
>
9+
> ๐Ÿ…  **300 Commits !!** 2021-03-31
10+
> ๐Ÿƒโ€โ™€๏ธ  _Running for 400 commits..._
11+
712
### ๐Ÿ“– [NOTES ๋ฐ”๋กœ๊ฐ€๊ธฐ](./notes)
813

914
๐Ÿ” ๊ฐ ๋ฌธ์ œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ’€์ด ๋ฐ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@@ -257,6 +262,7 @@
257262
| 05 | | [Programmers ๋„คํŠธ์›Œํฌ](./src/Graph/prg43162) | union-find |
258263
| 06 | | [SWEA-3289 ์„œ๋กœ์†Œ ์ง‘ํ•ฉ](./src/Graph/swea3289) | union-find |
259264
| 07 | | [JUNGOL-1863 ์ข…๊ต](./src/Graph/jo1863) | union-find : union-by-rank |
265+
| 08 | | [Baekjoon-21276 ๊ณ„๋ณด ๋ณต์›๊ฐ€ ํ˜ธ์„](./src/Graph/P21276) | [์œ„์ƒ์ •๋ ฌ](./notes/Graph/TopologicalSort.md) |
260266

261267
### Minimum Spanning Tree (MST)
262268

โ€Žsrc/Graph/P21276/Main.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package Graph.P21276;
2+
3+
import java.io.BufferedReader;
4+
import java.io.FileInputStream;
5+
import java.io.InputStreamReader;
6+
import java.util.*;
7+
8+
public class Main {
9+
10+
static int N, M;
11+
static String[] names;
12+
static HashMap<String, Integer> idx = new HashMap<>();
13+
14+
static LinkedList<Integer>[] children, graph;
15+
static int[] indegree;
16+
17+
public static void main(String[] args) throws Exception {
18+
System.setIn(new FileInputStream("src/Graph/P21276/input.txt"));
19+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
20+
21+
N = Integer.parseInt(br.readLine());
22+
names = new String[N];
23+
children = new LinkedList[N];
24+
graph = new LinkedList[N];
25+
indegree = new int[N];
26+
27+
StringTokenizer st = new StringTokenizer(br.readLine());
28+
for (int i = 0; i < N; i++) names[i] = st.nextToken();
29+
30+
Arrays.sort(names);
31+
for (int i = 0; i < N; i++) {
32+
idx.put(names[i], i);
33+
children[i] = new LinkedList<>();
34+
graph[i] = new LinkedList<>();
35+
}
36+
37+
M = Integer.parseInt(br.readLine());
38+
while (M-- > 0) {
39+
st = new StringTokenizer(br.readLine());
40+
int X = idx.get(st.nextToken()), Y = idx.get(st.nextToken());
41+
graph[Y].add(X);
42+
indegree[X] ++;
43+
}
44+
45+
Queue<Integer> q = new LinkedList<>();
46+
LinkedList<Integer> root = new LinkedList<>();
47+
for (int i = 0; i < N; i++) {
48+
if (indegree[i] == 0) {
49+
q.offer(i);
50+
root.add(i);
51+
}
52+
}
53+
54+
while (!q.isEmpty()) {
55+
int cur = q.poll();
56+
for (int next : graph[cur]) {
57+
indegree[next] --;
58+
if (indegree[next] == 0) {
59+
children[cur].add(next);
60+
q.offer(next);
61+
}
62+
}
63+
}
64+
65+
System.out.println(root.size());
66+
for (Integer s : root) System.out.print(names[s] + " ");
67+
System.out.println();
68+
69+
for (int i = 0; i < N; i++) {
70+
System.out.print(names[i] + " " + children[i].size() + " ");
71+
Collections.sort(children[i]);
72+
for (Integer c : children[i]) System.out.print(names[c] + " ");
73+
System.out.println();
74+
}
75+
}
76+
}

โ€Žsrc/Graph/P21276/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## [baekjoon-21276] ๊ณ„๋ณด ๋ณต์›๊ฐ€ ํ˜ธ์„
2+
3+
![image](https://user-images.githubusercontent.com/22045163/113163622-4cad7180-927b-11eb-80c4-628a5a2d8b20.png)
4+
5+
์ด ๋ฌธ์ œ๋Š” ์œ„์ƒ์ •๋ ฌ + Map ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์œ„์ƒ์ •๋ ฌ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ํž˜๋“ค์—ˆ๋‹ค. ๋” ๊ณต๋ถ€ํ•˜๋„๋ก !!!
6+
7+
![image](https://user-images.githubusercontent.com/22045163/113163695-5b942400-927b-11eb-9f80-e19a17d4fbee.png)

โ€Žsrc/Graph/P21276/input.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
7
2+
daeil sangdo yuri hoseok minji doha haeun
3+
7
4+
hoseok sangdo
5+
yuri minji
6+
hoseok daeil
7+
daeil sangdo
8+
haeun doha
9+
doha minji
10+
haeun minji

0 commit comments

Comments
ย (0)