반응형

컴퓨터 이론/자료구조 & 알고리즘 6

[자료구조] 힙(Heap)에 대해서 알아보자.

오늘은 힙(Heap)에 대해서 알아보는 시간을 갖도록 하겠다. Heap (1) 정의 - 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) * 완전 이진 트리 : 노드를 삽일할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 (2) 특징 - 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n)이 걸린다. - 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, 𝑂(𝑙𝑜𝑔𝑛)이 걸린다. - 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용된다. - 최대값 또는 최소값을 구하기 위한 구조로 분류되어있다. - 완전 이진 트리 형태를 가진다. - 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 ..

[자료구조] 트리(Tree)에 대해서 알아보자.

오늘은 트리에 대해서 알아보는 시간을 갖도록 하겠다. Tree (0) 배경지식 * Node : 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함) * Root Node : 트리 맨 위에 노드 * Level : 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 * Parent Node : 어떤 노드의 다음 레벨에 연결된 노드 * Child Node : 어떤 노드의 상위 레벨에 연결된 노드 * Leaf Node (Terminal Node) : Child Node가 하나도 없는 노드 * Sibling (Brother Node) : 동일한 Parent Node를 가진 노드 * Depth : 트리에서 Node가 가질 수 있는..

[자료구조] 큐(Queue)에 대해서 알아보자.

오늘은 큐(Queue)에 대해서 알아보는 시간을 갖도록 하겠다. Queue (1) 정의 - 선입선출(First In First Out - FIFO)의 자료구조이다. Queue라는 단어 자체가 표 같은 것을 구매하기 위해 줄서는 것을 의미한다. (2) 특징 - 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조이다. - FIFO(First In First out)로 스택과 꺼내는 순서가 반대이다.. - Enqueue() : 큐에서 데이터를 넣는 기능 - Dequeue() : 큐에서 데이터를 꺼내는 기능 (3) 활용 - 멀티 테스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용된다. (운영체제 참조) - 큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 ..

[자료구조] 스택(Stack)에 대해서 알아보자.

오늘은 스택(Stack)에 대해서 알아보는 시간을 갖도록 하겠다. Stack (1) 정의 - 후입선출 특성을 가지고 있는 자료구조를 말한다. - 바닥이 막힌 상자라고 생각하면 된다. 나중에 넣은 물건을 먼저 꺼내야하는 구조이다. (2) 특징 - 한쪽 끝에서만 자료를 넣거나 뺄 수 있다. - 가장 나중에 쌓은 데이터를 가장 먼저 빼낼수 있는 데이터 구조이다. - LIFO(Last-In First Out) (큐는 FIFO - First In First Out) - push() : 데이터를 스택에 넣기 - pop() : 데이터를 스택에서 꺼내기 (3) 장단점 1. 장점 - 구조가 단순해서, 구현이 쉽다. - 데이터 저장/읽기 속도가 빠르다. 2. 단점 (일반적인 스택) - 데이터 최대 갯수를 미리 정해야 한다..

[자료구조] Linked List에 대해서 알아보자.

오늘은 Linked List(링크드 리스트)에 대해서 알아보는 시간을 갖도록 하겠다. (1) 정의 - Linked List는 연결 리스트라고도 한다. - 노드(Node)와 포인터(Pointer)를 가지고 한 줄로 연결되어 있는 방식의 자료구조이다. - 배열은 순차적으로 연결된 공간에 데이터를 나열하는데 반해 linked list는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조이다. *노드(Node) : 데이터의 저장 단위 (데이터값, 포인터)로 구성 *포인터(Pointer) : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 (2) 장점 - 미리 데이터 공간을 할당하지 않아도 된다. (배열은 미리 데이터 공간을 할당해야 함) (3) 단점 - 연결을 위한 별..

[자료구조] Hash Table에 대해서 알아보자.

오늘은 자료구조에서 Hash Map에 대해서 알아보는 시간을 갖도록 하겠다. Hash Table (0) 배경 지식 * Hash 임의의 길이의 값을 해시함수(Hash Function)를 사용하여 고정된 크기의 값으로 변환하는 작업을 말한다. * Hash Function 키(Key)를 해시(Hash)로 바꿔주는 역할을 한다. 다양한 길이를 가지고 있는 key를 가지는 hash로 변경하여 저장소를 효율적으로 운영할 수 있도록 도와준다. 다만, 서로 다른 key가 같은 hash가 되는 경우를 해시 충돌(Hash Collision)이라고 하는데, 해시 충돌을 일으키는 확률을 최대한 줄이는 함수를 만드는 것이 중요하다. * Key 고유한 값이며, 해시 함수의 input이 된다. 다양한 길이의 값이 될 수 있다. 이..

반응형