힙(Heap) 힙(Heap)은 우선 순위 큐를 구현하기 위해 사용되는 자료구조이다. 기반은 트리 형태이며 삽입, 삭제 모두 O(logN)의 시간복잡도를 가진다. 우선순위 큐(Priority Queue) 우선순위 큐는 큐의 구조에서 요소별 가중치를 두어 우선순위를 정하여 pop()을 실행하는 자료구조이다. 예전에 queue를 정리해놓은 포스팅에서 언급한 적이 있듯이 어떤 작업을 수행할 때 단순 FIFO 방식을 따르는 것은 때론 비효율적으로 동작할 수 있다. 예를 들어, 운영체제의 프로세스 작업 스케쥴링에서 여러 방법들 중 우선순위 큐를 사용하여 스케쥴링 하는 방법이 있다. 힙의 특징 위에서 언급했듯 힙은 트리의 형태를 취하고 있으며 많은 트리의 종류들 중에서도 완전 이진 트리의 구조를 가진다..힙은 결국 ..
스택(Stack) 스택이란 ? 스택(Stack)은 순서대로 쌓여진 데이터를 의미힙나다. 스택은 한 쪽으로만 데이터의 입·출력이 동작하는 자료구조입니다. 기본적으로 FILO(First In Last Out)의 동작방식을 가지며 이는 말 그대로 먼저 들어간 요소가 가장 마지막에 꺼내진다는 것입니다. 메모리에서 함수 호출 시 변수, 리턴값 등의 데이터를 저장하는 공간입니다. 데이터를 넣는 것은 push(), 빼는 것은 pop()이라고 합니다. 스택의 구조 스택에 먼저 저장하는 데이터는 스택의 가장 아래쪽(높은 주솟값)부터 쌓이고 나중에 저장되는 데이터는 그 위로 쌓입니다. 스택의 동작방식을 그림으로 나타내보겠습니다. 기본적으로 스택의 구조는 이런식으로 생겼습니다. 다음은 스택에 A, B, C를 넣고 다시 빼는..