- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 힙(Heap) 자료구조, 힙 정렬(Heap Sort)2022-11-06 22:08:10힙(Haep) 이란? 힙(Heap)이란 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 힙은 '부모의 값이 자식의 값보다 ' 부모 - 자식 간 두 값의 대소 관계가 일정해야 한다. 또한 이 조건을 만족하는 완전 이진 트리이다. 참고: 힙에서 부모와 자식 관계는 일정하지만 형제 사이의 대소 관계는 일정하지 않다. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 힙을 사용하는 이유와 시간 복잡도 배열에 데이터를 넣고, 최댓값과 최솟값을 찾으려면 O(n)의 시간복잡도를 가지게 된다. 1. 이에 반해, 배열에 데이터를 넣고, 힙을 만드는 과정의 시간 복잡도는 O(log n) 2. 따라서 힙 정렬은 원소의 개수만큼 작업을 ..
- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 큐(Queue) 자료구조 정리(원형 큐 | 링 버퍼)2022-11-05 22:09:08큐(Queue)는 스택과 같이 데이터를 임시 저장하는 자료구조이다. 하지만 스택과는 다르게 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO) 구조이다. 용도 어떠한 작업/데이터를 순서대로 실행/사용하기 위해 대기시킬 때 사용한다. 서로 다른 쓰레드 사이 또는 프로세스 사이에서나 네트워크를 통해 자료를 주고받을 때 자료를 일시적으로 저장하는 용도로 많이 사용한다. 스택 용어 정리 인큐(enqueue): 큐에 데이터를 추가하는 작업 디큐(dequeue): 데이터를 꺼내는 작업 프론트(front): 데이터를 꺼내는 쪽(가장 앞에 있는 원소) 리어(rear): 데이터를 넣는 쪽(가장 뒤에 있는 원소) 스택과 마찬가지로 큐 또한 배열을 사용하여 구현이 가능하다. 참고로 인큐는 밀어 넣기라고도 표현한다..
- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 스택(stack) 자료구조 정리2022-11-05 21:45:32데이터를 임시 저장하는 기본 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식이다. LIFO(last in first out)란 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 자료 구조이다. 용도 스택은 비교적 구현이 쉬운 편임에도 활용도가 크다. 예를 들어서 브라우저에서 우리가 이전에 들어갔던 페이지로 돌아가기 위해서 '뒤로가기' 버튼을 눌렀을 때도 스택이 사용되고, Ctrl + Z (Undo) 작업도 스택을 이용한 작업이다. 또한 함수가 함수 자신을 호출하는 것(재귀 함수)도 스택에 기반을 두고 있다.(기회가 되었을 때 메모리의 구조를 공부하여 포스팅 해봐야겠다!) 또한 우리가 코드를 돌렸을 때 수많은 에러 내용을 Traceback으로 확인할 수 있을텐데, 이것도 스택에 기반해서 에러 ..