문제: https://www.acmicpc.net/problem/14567
위상정렬 문제입니다.
과목들 간의 우선순위를 저장을 한 후, 한 과목 당 자신의 선수 과목이 몇 개나 있는지 parentCnt[] 배열에 저장합니다.
선수과목이 0개인 (parentCnt[k] == 0) 과목들부터 큐에서 꺼내오면서 해당 과목을 선수 과목으로 가지고 있는 후수 과목들의 parentCnt[k] 값을 1씩 빼줍니다.
특정 과목을 들을 수 있는 시점은 parentCnt[k] == 0 일 때 해당 과목을 수강할 수 있습니다.
현재 큐에 들어있는 사이즈만큼 루프를 돌면서 (한 학기에 해당) 위 과정을 반복하면 됩니다.
코드: https://github.com/cotchan/algorithm/blob/main/BOJ/BOJ14567.java
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]2458번: 키 순서 (0) | 2022.03.23 |
---|---|
[BOJ]10282번: 해킹 (0) | 2022.03.22 |
[BOJ]2665번: 미로만들기 (0) | 2022.03.22 |
[BOJ]13116번: 30번 (0) | 2022.03.17 |
[BOJ]14425번: 문자열 집합 (0) | 2022.03.15 |