diff --git a/g0rnn/README.md b/g0rnn/README.md index 478f27f..c0d0128 100644 --- a/g0rnn/README.md +++ b/g0rnn/README.md @@ -33,5 +33,6 @@ | 29차시 | 2025.07.22 | combination | [소문난 칠공주](https://www.acmicpc.net/problem/1941) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/119 | | 30차시 | 2025.07.28 | segment-tree | [커피숍2](https://www.acmicpc.net/problem/1275) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/121 | | 31차시 | 2025.08.03 | segment-tree | [음주코딩](https://www.acmicpc.net/problem/5676) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/127 | +| 32차시 | 2025.08.09 | topology-sort | [문제집](https://www.acmicpc.net/problem/1766) | https://github.com/AlgoLeadMe/AlgoLeadMe-12/pull/128 | --- diff --git a/g0rnn/topology-sort/32-g0rnn.java b/g0rnn/topology-sort/32-g0rnn.java new file mode 100644 index 0000000..23e2f85 --- /dev/null +++ b/g0rnn/topology-sort/32-g0rnn.java @@ -0,0 +1,51 @@ +package beakjoon; + +import java.util.*; +import java.io.*; + +public class Sol1766 { + static int n, m; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + int[] indegree = new int[n + 1]; + List> graph = new ArrayList<>(); + for (int i = 0; i <= n; i++) { + graph.add(new ArrayList<>()); + } + + for (int i = 0; i < m; i++) { + st = new StringTokenizer(br.readLine()); + int u = Integer.parseInt(st.nextToken()); + int v = Integer.parseInt(st.nextToken()); + indegree[v] += 1; + graph.get(u).add(v); + } + br.close(); + + PriorityQueue q = new PriorityQueue<>(); + for (int i = 1; i <= n; i++) { + if (indegree[i] == 0) q.offer(i); + } + + StringBuilder sb = new StringBuilder(); + while (!q.isEmpty()) { + Integer cur = q.poll(); + sb.append(cur); + sb.append(" "); + + for (int next : graph.get(cur)) { + indegree[next] -= 1; + if (indegree[next] == 0) { + q.offer(next); + } + } + } + System.out.println(sb); + } + +}