위상정렬의 기본 문제!
위상정렬은 기본적으로 deque을 이용한다.
First-In-First-Out
파이썬에서는 from collections import deque를 통해 가져온 deque로 append, popleft()를 사용할 수 있었으나,
Swift에서는 기본적으로 제공해주는 deque가 없기 때문에,
Array에 원소들을 넣으며, 현재 popleft하고( 했다 치고 ..) 맨 아래 바닥에 있는 원소가 누구인지 가리키는 idx 변수를 사용한다.
while 문 종료조건은 Array.count > idx가 깨지는 순간이다!
Array의 count는 1에서, idx는 0에서 시작하므로, 새로 q에 들어온 원소의 수가 pop 한 원소 수보다 크거나 같으면 while문은 계속 돌아가게 된다!! ( python의 deque를 쓰다가 이러한 방법으로 구현하니 좀 더 컴공스러운 느낌(?)...이 매력있는 것 같다 ^^)
백준 15652: N과 M (4) (Swift) (0) | 2022.05.24 |
---|---|
백준 15650: N과 M (2) (Swift) (0) | 2022.05.24 |
백준 1197: 최소 스패닝 트리 (Swift) (0) | 2022.05.23 |
백준 11404: 플로이드 (Swift) (0) | 2022.05.23 |
백준 2805: 나무 자르기 (Swift) (0) | 2022.05.21 |