diff --git a/H0ngJu/README.md b/H0ngJu/README.md index 15aa5387..1bf41770 100644 --- a/H0ngJu/README.md +++ b/H0ngJu/README.md @@ -5,5 +5,6 @@ | 1차시 | 2024.03.05 | 큐 | [프로세스](https://school.programmers.co.kr/learn/courses/30/lessons/42587) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/151 | | 2차시 | 2024.03.07 | 큐 | [다리를 지나는 트럭](https://school.programmers.co.kr/learn/courses/30/lessons/42583) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/153 | | 3차시 | 2024.03.10 | 힙 | [N번째 큰 수](https://www.acmicpc.net/problem/2075) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/156 | +| 4차시 | 2024.03.13 | 힙 | [문제집](https://www.acmicpc.net/problem/1766) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/158 | --- diff --git "a/H0ngJu/\355\236\231/\353\254\270\354\240\234\354\247\221.py" "b/H0ngJu/\355\236\231/\353\254\270\354\240\234\354\247\221.py" new file mode 100644 index 00000000..b09a6544 --- /dev/null +++ "b/H0ngJu/\355\236\231/\353\254\270\354\240\234\354\247\221.py" @@ -0,0 +1,32 @@ +import sys +import heapq + +n, m = map(int, sys.stdin.readline().rstrip().split()) + +graph = [[] for _ in range(n+1)] +inDegree = [0 for _ in range(n+1)] +q = [] +answer = [] + +# 입력받아서 넣기 +for _ in range(m): + p1, p2 = map(int, sys.stdin.readline().rstrip().split()) + graph[p1].append(p2) # p1은 p2와 연결된 문제 + inDegree[p2] += 1 # 간선 추가 + +# 진입차수가 0이면 큐에 넣기 +for i in range(1, n+1): + if inDegree[i] == 0: + heapq.heappush(q, i) + +# answer에 넣고, 간선 제거 +while q: + prob = heapq.heappop(q) + answer.append(prob) + for i in graph[prob]: # 간선 제거 & 진입차수 0인 것들 처리 + inDegree[i] -= 1 + if inDegree[i] == 0: + heapq.heappush(q, i) + +for result in answer: + print(result, end=" ") \ No newline at end of file