Swift알고리즘
백준 2252: 줄 세우기 (Swift)
앱등개발자IOS
2022. 5. 23. 11:51
위상정렬의 기본 문제!
위상정렬은 기본적으로 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를 쓰다가 이러한 방법으로 구현하니 좀 더 컴공스러운 느낌(?)...이 매력있는 것 같다 ^^)