CS/자료구조 4

[자료구조] 해시(Hash)

해시 테이블 (Hash Table) 데이터를 효율적으로 관리하기 위해, 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것. 해시 함수를 구현하여 데이터 값을 해시 값으로 매핑한다. 해시 테이블의 특징 해시 테이블이란, (key, value)의 형태로 데이터를 저장하는 자료구조이다. 빠른 데이터 검색이 필요할 때 유용하다. 해시 함수에 key를 적용해 고유한 index를 생성하여, 그 index에 저장된 값을 꺼내오는 구조이다. 해시 충돌이 일어나지 않는 경우, 해시 테이블의 시간 복잡도는 O(1) Hash map, map, dictionary, 연관배열 등의 이름으로 알려져 있다. 해시 함수 key를 해시로 바꿔는 역할을 한다. 다양한 길이를 가지고 있는 key를, 일정한 길이의 hash로 바꾸어..

CS/자료구조 2023.01.24

[자료구조] 트리(Tree)와 힙(Heap)

비선형 자료 구조란? 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말한다. 일반적으로 트리나 그래프를 말한다. 트리(Tree) 트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조이다. Node(노드)와 Edge(간선)로 이루어진 자료구조이다. 용어 - 노드 (Node) : 트리를 구성하고 있는 각각의 요소를 의미한다. - 간선 (edge) : 노드와 노드를 연결하는 선 - 루트 노드 (Root Node) : A 트리 구조에서 최상위에 있는 노드를 의미한다. - 단말 노트 (leaf node) : F, G, H, I, J 차수가 0인 노드, 즉 자식 노드가 없는 노드. - 형제 노드 (sibling node) : H와 I는 형제 노드이다. 같은 부모 노드의 자..

CS/자료구조 2023.01.24

[자료구조] 스택(Stack) & 큐(Queue)

스택(Stack) 선형 자료구조의 일종으로, 가장 나중에 들어온 것이 가장 먼저 나온다. LIFO (Last In First Out, 후입선출) ※ 스택(stack)이란, 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것을 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. 스택의 특징 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. 즉, 스택의 경우 자료의 삽입과 삭제는 한 곳(top)에서만 이루어지게 된다. 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가졌다. 만약 스택이 비어있을 때 자료를 꺼내려고 시도를 하면 스택 언더플로우(Stack Underflow)가 ..

CS/자료구조 2023.01.09

[자료구조] Array vs ArrayList vs LinkedList

세 자료구조를 한 문장으로 정의하면 아래와 같이 말할 수 있다. Array는 index로 빠르게 값을 찾는 것이 가능하다. ArrayList는 데이터를 찾는데 빠르지만, 삽입 및 삭제가 느리다. LinkedList는 데이터의 삽입 및 삭제가 빠르다. ArrayList vs LinkedList 차이 ArrayList는 데이터들이 순서대로 늘어선 배열의 형식을 취하고 있지만, LinkedList는 자료의 주소값으로 서로 연결된 형식을 가지고 있다. 이러한 구조에 의해 둘은 각각의 장단점을 가지고 있다. ArrayList 원하는 데이터에 무작위로 접근할 수 있다. 리스트의 크기가 제한되어 있으며, 리스트의 크기를 재조정하는 것은 많은 연산이 필요하다. 데이터의 추가 / 삭제를 위해서는 임시 배열을 생성하여 복..

CS/자료구조 2023.01.07