본문 바로가기

Queue3

메모리 구조에서 Stack과 Queue의 역할 메모리 구조에서 왜 Stack과 Queue가 필요하지? 라고 생각하실 수 있겠지만.. 메모리 구조를 공부하시다보면 스택, 힙, 데이터, 코드 영역이 있는 거 아시죠? 여기서 스택 영역을 우리가 생각하는 Stack 역할로 생각할 수 있고, 힙 영역을 Queue 역할로 생각할 수 있습니다. 여기서 힙과 큐를 혼동하실 수 있는데요, 지금 말하는 의미는 같지만 큐는 자료구조론에서 사용하는 용어이고 힙은 메모리 관련 용어로 사용한다고 생각하면 될 것 같네요! 그리고 이런 스택과 큐의 원리를 메모리 구조에서는 보통 데이터를 처리할 때 데이터를 임시로 저장하거나, 입/출력 장치의 데이터를 일시적으로 저장할 때 사용합니다. 데이터를 잠시 보관해두는 일을 하기 위해 메모리 주소와 인덱스를 일일이 지정하는 일은 너무 복잡.. 2021. 4. 14.
GCD (Grand Central Dispatch) iOS의 중요한 개념 중 하나인 GCD!! GCD가 뭘까요? GCD는 Grand Central Dispatch 의 줄임말입니다. GCD에 대해 자세하게 알아보기 전에 왜 GCD가 나오게 됐는지, 그 배경부터 살펴보겠습니다. 멀티 코어 프로세서에서는 프로그램의 동작을 멀티 프로세서에게 어떻게 잘 배분하는지가 중요합니다. GCD 이전에는 멀티 스레딩을 위해 Thread와 OperationQueue 등의 클래스를 사용했다고 하는데요, Thread는 복잡할 뿐만 아니라 임계 구역 (Critical Section) 등을 이용한 Lock을 관리하기 까다로웠습니다. 그리고 OperationQueue는 GCD에 비해 무겁고 Boilerplate Code들이 많이 필요한 문제가 있었죠. 그래서 Apple은 GCD를 내놓.. 2021. 3. 23.
PriorityQueue (우선순위 큐) Priority Queue (우선순위 큐)는 말 그대로 사용자가 지정한 조건에 따라 우선순위가 정해집니다. 일반적인 Queue는 단지 데이터가 들어오는 순서에 따라 FIFO(First In First Out) 구조를 따르게 되는데, Priority Queue는 우선순위가 높은 데이터부터 pop됩니다. PriorityQueue는 우선순위에 따라 Heap(힙) 자료구조로 데이터를 저장하게 되기 때문에 삽입과 삭제의 시간복잡도는 O(log n)으로 매우 빠른 시간을 자랑합니다. 제가 이 Priority Queue (우선순위 큐)를 Swift로 직접 구현하기 위해 이전 게시물에서 Heap(힙) 자료구조를 공부했었습니다!! Queue도.. Stack도.. PriorityQueue도 없는 Swift는... 사용하려.. 2021. 2. 19.