내 풀이
from _collections import deque
n, m = map(int, input().split())
data = [[] for _ in range(n + 1)]
indegree = [0 for _ in range(n + 1)]
for _ in range(m):
a, b = map(int, input().split())
data[a].append(b)
indegree[b] += 1
def topology_sort():
q = deque()
for i in range(1, n + 1):
if indegree[i] == 0:
q.append(i)
result = []
while q:
node = q.popleft()
result.append(node)
for i in data[node]:
indegree[i] -= 1
if indegree[i] == 0:
q.append(i)
for i in result:
print(i, end=' ')
topology_sort()
|
cs |
Why?
왜 두명의 키가 큰지 작은지만 알려줬는데, 위상정렬로 해결이 된걸까?

문제에서 주어지는 정보는 두 사람의 키만을 여러 번 비교해준다.
이 정보로 정확한 키 순서는 알 수 없지만, 두 사람을 비교했을 때 둘 중 하나는 비교한 다른 한 사람보다는 더 앞에 있거나 뒤에 있다는 것을 알 수 있다.
'개발 > 알고리즘' 카테고리의 다른 글
[백준 / Python] 음악프로그램_2623 (0) | 2021.05.03 |
---|---|
[백준 / Python] 게임 개발_1516 (0) | 2021.05.02 |
[백준 / Python] 네트워크 연결_1922 (0) | 2021.04.28 |
[백준 / Python] 파티_1238 (0) | 2021.04.20 |
[BOJ] 좋은수열_2661 (0) | 2021.04.08 |