Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자료구조
- 해시함수
- 선택정렬
- 스택
- 백준
- 코테
- 트라이
- 퀵정렬
- 삽입정렬
- divide and conquer
- MSA
- 코테준비
- 파싱
- 연결리스트
- 힙
- 분할정복
- 이진트리탐색
- 코딩테스트
- stack
- LinkedList
- 거품정렬
- 우선순위 큐
- heap
- 큐
- 15552번
- 스터디
- Timsort
- 팀정렬
- collections.sort
- 프로그래머스
Archives
- Today
- Total
Little bIT awesome
위상 정렬 (Topological Sorting) 본문
위상 정렬
정렬 알고리즘의 일종으로, 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘
사이클이 없는 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것'
진입차수와 진출차수
- 진입 차수 : 특정한 노드로 들어오는 간선의 개수
- 진출 차수 : 특정한 노드에서 나가는 간선의 개수
위상 정렬 알고리즘 동작 과정
- 진입차수가 0인 노드를 큐에 넣는다.
- 큐가 빌 때까지 다음의 과정을 반복한다.
① 큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거
② 새롭게 진입차수가 0이 된 노드를 큐에 삽입
위상 정렬의 특징
- 사이클이 없는 방향 그래프(DAG)에 대해서만 수행할 수 있다.
※ DAG(Direct Acyclic Graph) : 순환하지 않는 방향 그래프
- 위상 정렬에는 여러가지 답이 존재할 수 있다.
- 모든 원소를 방문하기 전에 큐가 비게 된다면 사이클이 존재한다고 판단
왜냐하면, 사이클에 포함된 원소는 큐에 들어가지 못하게 됨 - 보통 큐로 구현하지만, 스택을 이용한 DFS로도 구현 가능
'코딩테스트' 카테고리의 다른 글
코테 문제 판단 기준 (0) | 2024.10.29 |
---|---|
if __name__=="__main__" (0) | 2023.04.06 |
유클리드 알고리즘 (0) | 2023.03.23 |
문자열을 입력받아 숫자인지 아닌지 판별하기 (0) | 2023.03.07 |
회문 문자열 검사 (0) | 2023.03.07 |