코테/자료구조(7)
-
해시 테이블
해시 테이블은 키(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 -
트리
트리 (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 -
스택
스택(Stack)Stack은 컴퓨터 과학에서 자주 사용되는 자료구조 중 하나로, 여러 애플리케이션에서 중요한 역할을 합니다. 예를 들어, 함수 호출 스택, 웹 브라우저의 뒤로 가기 기능, 텍스트 에디터의 실행 취소 기능 등이 스택의 원리를 사용합니다. 이제 스택의 기본 개념과 동작 원리에 대해 알아보겠습니다. LIFOStack은 LIFO라는 특성을 가지는 데이터 구조 입니다.LIFO는 후입선출(Last In First Out)이라고 하는데, 가장 최근에 들어온 것이 제일 먼저 나가야 한다는 뜻입니다.우리 실생활에서 예시를 들어봅시다. 접시가 사진처럼 쌓여있을 때 중간에 있는 접시를 꺼내고 싶다면오른쪽 사진처럼 위쪽에 있는 접시(꺼내려는 접시보다 나중에 쌓여진 접시)를 꺼낸 후 중간에 있는 접시를 꺼낼 수..
2024.08.22