BOJ 2252. 줄 세우기
1. 문제설명
- 일부 학생들의 키를 비교한 결과가 주어졌을 때 줄을 세우는 순서를 구하라
-
입력은 A, B로 주어지는 데 이는 A가 B 앞에 서야한다는 뜻이다.
- 문제 분류
- Graph, Topological Sorting
2. 알고리즘 설계
- 위상정렬(Topological Sorting) 기본 문제였다.
- 개념은 여기에 정리해 두었다.
- 주어지는
M
개의 입력 중 각각을 A, B라고 했을 때 그래프는 A->B의 형태가 될 것이다. - B가 가르켜진 횟수를 저장해둔다.
- 한번도 가르켜지지 않은 노드 번호가 있다면, 큐에 넣어준다.
- 참고로 반드시 한 개 이상 있다.
- 큐가 빌 때까지 반복
- 현재 큐의 가장 앞 원소를 꺼낸다.
- 이건 먼저 선택되어야 하는 노드이다.
- 출력한다 or result에 저장
- 가장 앞 원소가 가르키고 있는 원소의 가르킴 횟수를 하나씩 깎는다.
- 만약 깎았는데 횟수가 0이 되면 큐에 넣는다.
- 현재 큐의 가장 앞 원소를 꺼낸다.