위상정렬을 이용하여 구현해봤는데
해당 작업을 하기 위해 필요한 작업의 수를 in_list에 넣고,
해당 작업에 의존 관계가 있는(즉, 해당 작업을 수행하고 나서 수행할 수 있는) 작업들을 out_list에 저장했습니다.
그 다음 in_list의 값이 0인것을 탐색해 out_list를 하나씩 제거하면서 해당 작업의 in_list 값을 줄였습니다.
그 결과 in_list 값이 0이고 out_list 값도 없는 작업은 work_list 리스트에 저장을 하고
이 작업은 완료되었음을 알리기 위해 in_list와 out_list의 값을 각각 -1과 *로 변경하였습니다.
이 과정을 work_list가 모두 채워질때까지 반복합니다.
작업을 시작할 때도 알파벳 순서대로 작업을 수행하고, out_list도 사전순으로 순회하도록 해서
의존관계가 없는 작업들도 사전순으로 출력하도록 했습니다.
혹시 오류가 보이시거나 문제가 생기는 테스트 케이스를 알고 계신다면 알려주시면 감사하겠습니다..
furyhunter
ORDERING
위상정렬을 이용하여 구현해봤는데
해당 작업을 하기 위해 필요한 작업의 수를 in_list에 넣고,
해당 작업에 의존 관계가 있는(즉, 해당 작업을 수행하고 나서 수행할 수 있는) 작업들을 out_list에 저장했습니다.
그 다음 in_list의 값이 0인것을 탐색해 out_list를 하나씩 제거하면서 해당 작업의 in_list 값을 줄였습니다.
그 결과 in_list 값이 0이고 out_list 값도 없는 작업은 work_list 리스트에 저장을 하고
이 작업은 완료되었음을 알리기 위해 in_list와 out_list의 값을 각각 -1과 *로 변경하였습니다.
이 과정을 work_list가 모두 채워질때까지 반복합니다.
작업을 시작할 때도 알파벳 순서대로 작업을 수행하고, out_list도 사전순으로 순회하도록 해서
의존관계가 없는 작업들도 사전순으로 출력하도록 했습니다.
혹시 오류가 보이시거나 문제가 생기는 테스트 케이스를 알고 계신다면 알려주시면 감사하겠습니다..
8년 전