코딩

[BOJ, 백준] 14567 선수과목 Python

척척석사아님 2024. 10. 18. 15:07
728x90

 

 

이전 스터디의 기억을 되짚어가며 .... 선수과목이라는 문제를 풀었습니다.

옛날 LeetCode에서의 문제와 거의 유사한 것 같네요.

indegree의 차수를 항상 유의하면서 카운팅을 하면 되겠습니다.

 

import sys
from collections import deque
input = sys.stdin.readline

N, M = map(int,input().split())
node_ind = [0 for _ in range (0, N+1)]
answer = [1 for _ in range (0, N+1)]
gp = [[] for _ in range (0, N+1)]
for _ in range (0,M):
    a, b = map(int,input().split())
    gp[a].append(b)
    node_ind[b] += 1

deq = deque()
for i in range (1, N+1):
    # 해당 학기에 바로 이수할 수 있다느 뜻이므로
    if node_ind[i] == 0:
        deq.append(i)

while deq:
    x = deq.popleft()
    for y in gp[x]:
        node_ind[y] -= 1
        if node_ind[y] == 0:
            answer[y] = answer[x] + 1
            deq.append(y)
print(*answer[1:])