위상 정렬 예제 - 2
문제 분석
손으로 풀어보기
슈도코드
n(건물 수)
A(인접 리스트)
inDegree(진입 차수 리스트)
build(각 건물을 짓는 데 걸리는 시간 리스트)
for n 반복:
인접 리스트 저장
진입 차수 리스트 저장
각 건물을 짓는 데 걸리는 시간 리스트 저장
큐 생성
for n 반복:
진입 차수가 0인 노드 큐에 삽입
while 큐가 빌 때까지:
큐에서 현재 노드 가져오기
for 현재 노드에서 갈 수 있는 노드:
다음 노드 진입 차수 1 감소
결과 업데이트 = max(현재 저장된 값, 현재 출발 노드 + 비용)
if 다음 노드 진입 차수가 0이면:
큐에 다음 노드 추가
위상 정렬 결과 출력코드 구현 - 파이썬
코드 구현 - 자바
Last updated