From f77be4e0880ac165f60a4a0d136042876369ae36 Mon Sep 17 00:00:00 2001 From: H0ngJu Date: Wed, 13 Mar 2024 21:10:22 +0900 Subject: [PATCH] 2024-03-13 --- H0ngJu/README.md | 1 + .../\353\254\270\354\240\234\354\247\221.py" | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 "H0ngJu/\355\236\231/\353\254\270\354\240\234\354\247\221.py" diff --git a/H0ngJu/README.md b/H0ngJu/README.md index af4ff40e..ca702888 100644 --- a/H0ngJu/README.md +++ b/H0ngJu/README.md @@ -3,5 +3,6 @@ | 차시 | 날짜 | 문제유형 | 링크 | 풀이 | | :---: | :--------: | :------: | :-------------------------------------------------------------------------: | :-------------------------------------------------: | | 1차시 | 2024.03.05 | 큐 | [프로세스](https://school.programmers.co.kr/learn/courses/30/lessons/42587) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/151 | +| 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