코테(8)
-
해시 테이블
해시 테이블은 키(key)를 특정한 해시 함수(Hash Function)를 통해서 해시값으로 변환하고 이 해시값을 인덱스로 사용해서 데이터를 저장하는 자료구조 입니다. 해시 테이블은 평균적으로 O(1)의 시간 복잡도로 데이터를 검색하고 삽입할 수 있습니다. 충돌충돌은 서로 다른 두 키가 동일한 해시 값을 갖게 되어 동일한 위치에 저장되려고 하는 상황을 의미합니다.충돌이 발생할 경우, 이를 해결하기 위한 방법이 필요한데 일반적으로 개방 주소법(Open Addressing)과 체이닝(Separate Chaining)이라는 방법이 사용됩니다. 체이닝(Chaining)체이닝은 해시 테이블의 각 버킷에 해당 인덱스로 해시된 키-값 쌍의 연결 리스트(Linked List)를 저장하는 방법입니다.충돌이 발생했을 때 ..
2024.08.28 -
그래프
그래프 (Graph) 그래프는 노드(Node, Vertex)와 노드들을 연결하는 간선(Edge)으로 구성된 자료구조입니다. 그래프의 종류방향 그래프(Directed Graph)와 무방향(Undirected Graph)방향 그래프간선에 방향성이 있는 그래프입니다.한 노드에서 다른 노드로 가는 경로가 정의되어 있는 형태를 말합니다.(self edge라고 자기 자신을 가리키는 경우도 있음)무방향 그래프간선에 방향성이 없는 그래프입니다.한 노드에서 다른 노드로 양방향으로 이동이 가능합니다.(tree도 방향 그래프이지만 항상 위에서 아래로 흐르기 때문에 생략하는 경우임) 사이클 그래프(Cyclic Graph)와 비순환 그래프(Acyclic Graph)사이클 그래프위 사진처럼 하나 이상의 사이클(순환 구조)가 있..
2024.08.28 -
DFS/BFS (깊이/너비 우선 탐색)
그래프 자료구조를 탐색하는 대표적인 방법으로 DFS와 BFS가 있습니다. DFS는 Depth-First-Search의 약자로 깊이 우선 탐색이라 하고BFS는 Breadth-First-Search의 약자로 너비 우선 탐색이라 합니다. BFS너비 우선 탐색은 이름 그대로 탐색할 때 너비를 우선으로 탐색하는 알고리즘입니다.BFS는 '맹목적인 탐색'을 하고자 할 때 사용할 수 있는 탐색 기법입니다.너비 우선 탐색은 최단경로를 찾아준다는 점에서 미로 찾기와 같은 문제에서 많이 사용됩니다.BFS는 보통 큐(Queue)로 구현을 많이 합니다. (먼저 들어온 것을 먼저 처리한다는 특징) 구현위의 사진을 예시로 들어보겠습니다.우선 시작 노드를 큐에 삽입하면서 시작합니다.그럼 큐에는 0이라는 노드가 하나 들어갑니다.(시작..
2024.08.28 -
트리
트리 (Tree)트리는 계층적 구조를 나타내는 비선형의 자료구조를 말합니다.트리는 노드(Node)라는 것들의 집합으로 이루어져 있고, 하나의 루트 노드를 가지며 이 루트 노드에서부터 다른 노드를 연결하는 간선으로 구성됩니다.간선은 부모 노드와 자식 노드를 연결하며, 각 노드는 최대 하나의 부모 노드와 여러 개의 자식 노드를 가질 수 있습니다. Tree의 구조노드(Node)루트 노드(Root Node) : 트리의 가장 상위에 있는 노드를 말합니다.부모 노드(Parent Node) : 어떤 노드의 상위에 있는 노드를 말합니다.각 노드는 정확하게 하나의 부모 노드를 가집니다.자식 노드(Children Node) : 어떤 노드의 하위에 있는 노드들을 말합니다.각 노드는 여러 개의 자식 노드를 가질 수 있습니다...
2024.08.23 -
덱
덱 (Deque)덱은 Double Ended Queue의 줄임말로, 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조입니다.Deque는 큐와 스택의 특성을 모두 갖고있으며, 양쪽 끝(head, tail)에서의 삽입과 삭제가 빠르게 이루어지는 특징을 가지고 있습니다.이는 다시 말하면 중간에 삽입하거나 삭제하는게 불가능 하다는 의미도 됩니다. Deque의 구조와 구현삽입, 삭제, 확인head에 데이터를 추가하는 작업을 'addFirst'tail에 데이터를 추가하는 작업을 'addLast' head의 데이터를 확인하는 작업을 'getFirst'tail의 데이터를 확인하는 작업을 'getLast' head의 데이터를 확인하는 작업을 'removeFirst'tail의 데이터를 확인하는 작업을 'removeLast..
2024.08.23 -
큐
큐(Queue)큐는 프린터 작업 처리, 운영 체제의 프로세스 스케줄링, 네트워크 패킷 처리 등 다양한 분야에서 활용되는 자료구조입니다. FIFOQueue는 FIFO라는 특성을 가지는 데이터 구조 입니다.FIFO는 선입선출(First In First Out)의 원칙을 말하는데, 먼저들어온 데이터가 먼저 처리된다는 의미입니다. Queue의 구조와 구현삽입과 삭제큐에 데이터를 추가하는 작업을 `enqueue` 삭제하는 작업을 `dequeue`라고 합니다. Front와 Rear포인터Queue자료구조에서 Front와 Rear 포인터는 큐의 시작과 끝을 나태는 두 가지 포인터입니다.Front는 큐의 맨 앞 요소를 가리키고, Queue에서 요소를 제거할 때 사용됩니다.Rear는 큐의 맨 뒤 요소를 가리키고, Queu..
2024.08.22