미소를뿌리는감자의 코딩
[백준 2024/09/23] 2252번 줄 세우기 본문
728x90
1. 문제
https://www.acmicpc.net/problem/2252
2. 접근 방법
위상 정렬을 사용하도록 하는 문제였다.
키의 순서를 adj에 정렬해 주고, inD라는 함수에 몇개의 진입 차수를 필요로 하는지 표현해 주었다.
3. 코드
from collections import deque
def topological():
queue = deque()
result = []
for i in range(1, num+1, 1):
if inD[i] == 0:
queue.append(i)
for _ in range(num):
if not queue:
return -1
q = queue.popleft()
result.append(q)
for i in adj[q]:
inD[i] -= 1
if inD[i] == 0:
queue.append(i)
return " ".join(map(str, result))
if __name__ == "__main__":
num, compare_cnt = map(int, input().split())
adj = [[] for i in range(num+1)]
inD = [0] * (num+1)
for _ in range(compare_cnt):
f, l = map(int, input().split())
adj[f].append(l)
inD[l] += 1
print(topological())
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 2024/09/25] 1948번 임계경로 (0) | 2024.09.25 |
---|---|
[백준 2024/09/24] 2637번 장난감 조립 (0) | 2024.09.24 |
[백준 2024/09/23] 2294번 동전 2 (0) | 2024.09.23 |
[백준 2024/09/23] 3055번 탈출 (0) | 2024.09.23 |
[백준 2024/09/22] 2665번 미로 만들기 w. 0-1 BFS (2) | 2024.09.22 |