Algorithm & Data Structure/DataStructure
-
자료구조: 해시테이블(Hash Table)Algorithm & Data Structure/DataStructure 2024. 11. 24. 17:11
해시테이블은 효율적인 데이터 저장과 검색을 위해 해시 함수를 사용하여 키(key)를 해시값(hash value)으로 변환하고, 이를 통해 데이터의 위치를 결정하는 자료구조입니다. 해시맵과 해시테이블은 개념적으로 유사하지만, 구현 방식과 충돌 해결 방법에 따라 차이가 있습니다. 이번 글에서는 해시테이블의 기본 개념부터 다양한 충돌 해결 방법까지 자세히 알아보겠습니다.해시테이블이란?해시테이블(Hash Table)은 키를 해시 함수로 해시값으로 변환하고, 이 해시값을 인덱스로 사용하여 데이터를 저장하는 자료구조입니다. 이를 통해 평균적으로 O(1)의 시간 복잡도로 데이터에 접근할 수 있습니다. 그러나 해시 함수의 성능과 충돌 해결 방법에 따라 실제 성능은 달라질 수 있습니다.해시테이블의 동작 원리해시테이블의 ..
-
자료구조: 해시맵(Hash Map)Algorithm & Data Structure/DataStructure 2024. 11. 23. 10:52
해시맵은 키(key)와 값(value)을 효율적으로 저장하고 검색하기 위한 자료구조입니다. 해시 함수를 사용하여 키를 특정 인덱스로 매핑함으로써, 데이터에 대한 빠른 접근이 가능합니다. 이 글에서는 해시맵의 기본 개념부터 Concurrent HashMap과 Ordered HashMap에 이르기까지 자세히 알아보겠습니다.해시맵이란?해시맵(Hash Map)은 키-값 쌍을 저장하는 자료구조로, 키를 해시 함수(hash function)에 통과시켜 해시값(hash value)을 생성하고 이를 인덱스로 사용합니다. 이를 통해 평균적으로 O(1)의 시간 복잡도로 데이터에 접근할 수 있습니다.해시맵의 동작 원리해시맵은 다양한 개념과 용어로 구성되어 있으며, 각 요소가 유기적으로 작용하여 효율적인 데이터 저장과 검색을..
-
자료구조: 그래프(Graph)Algorithm & Data Structure/DataStructure 2024. 11. 17. 21:24
1. 그래프란 무엇인가?그래프는 정점(Vertex)과 간선(Edge)으로 구성된 데이터 구조입니다. 각 정점은 데이터를 나타내며, 간선은 정점 간의 관계 또는 연결을 나타냅니다. 그래프는 네트워크 구조를 표현하는 데 매우 적합합니다. 예를 들어, 소셜 네트워크, 도로 지도, 인터넷의 링크 구조 등이 있습니다.그래프의 구성 요소정점(Vertex):데이터를 저장하는 노드입니다.예: 도시, 사람, 웹 페이지 등.간선(Edge):정점 간의 관계를 나타냅니다.방향이 있는 경우 유방향(Directed), 없는 경우 무방향(Undirected)입니다.가중치(Weight):간선에 추가 정보(예: 거리, 비용)를 저장하는 값입니다.2. 그래프의 종류무방향 그래프(Undirected Graph):간선에 방향이 없습니다.예..
-
자료구조: 큐(Queue)Algorithm & Data Structure/DataStructure 2024. 11. 2. 14:51
1. 개요 (Introduction)Queue는 데이터를 일렬로 저장하고 처리하는 선형 자료구조로, FIFO(First-In-First-Out) 원칙을 따릅니다. 이는 가장 먼저 추가된 요소가 가장 먼저 제거되는 방식으로, 사람 줄을 서서 차례로 처리하는 것과 유사합니다. Queue는 CPU 스케줄링, 프린터 작업 처리, 네트워크 패킷 처리 등 다양한 분야에서 활용됩니다.2. Queue의 활용 예시 (Use Cases of Queue)Queue는 특정 순서를 유지해야 하는 문제에서 유용하게 사용됩니다.작업 스케줄링: 운영체제의 작업 스케줄링에서 프로세스를 처리할 때 Queue가 사용됩니다. 먼저 들어온 작업이 먼저 처리되므로 처리 순서를 제어할 수 있습니다.프린터 작업 관리: 프린터에 여러 작업이 대기 ..
-
자료구조: 스택(Stack)Algorithm & Data Structure/DataStructure 2024. 11. 2. 14:42
1. 개요 (Introduction)Stack은 데이터가 순서대로 쌓이고 제거되는 자료구조로, LIFO(Last-In-First-Out) 원칙을 따릅니다. 이는 가장 마지막에 추가된 요소가 가장 먼저 제거되는 특성으로, 마치 접시를 쌓아 올리고 하나씩 꺼내는 방식과 유사합니다. Stack은 주로 메모리 관리, 수식 계산, 웹 브라우저의 뒤로 가기 기능 등 여러 분야에서 활용됩니다. 2. Stack의 활용 예시 (Use Cases of Stack)Stack은 일상적인 문제 해결과 알고리즘에서 자주 사용되는 자료구조입니다.함수 호출 관리: 프로그래밍 언어의 런타임 시스템은 Stack을 사용하여 함수 호출을 관리합니다. 함수가 호출될 때마다 Stack에 새로운 프레임이 쌓이며, 함수가 끝나면 Stack에서 제..
-
golang: Array vs LinkedListAlgorithm & Data Structure/DataStructure 2024. 7. 31. 13:51
Go 언어에서의 Array vs LinkedListGo 언어에서 배열과 링크드 리스트의 차이점을 살펴보고, 각각의 장단점을 예시와 함께 설명하겠습니다.배열 (Array)배열은 고정된 크기를 가진 연속된 메모리 블럭입니다. 배열을 선언할 때 크기를 지정해야 하며, 이후에는 크기를 변경할 수 없습니다.package mainimport "fmt"func main() { var arr [100]int arr[33] = 100 fmt.Println(arr[33]) // 출력: 100}장점Random Access에 강함: 배열은 연속된 메모리 블럭이기 때문에 인덱스를 통해 빠르게 접근할 수 있습니다. O(1)의 시간 복잡도를 가집니다.Cache Miss가 적음: 연속된 메모리 블럭이므로 캐시 히트율..
-
Java: ArrayList vs LinkedListAlgorithm & Data Structure/DataStructure 2024. 7. 31. 13:31
ArrayList vs LinkedList: 차이점 및 성능 비교자바 컬렉션 프레임워크는 다양한 데이터 구조를 제공하며, 그 중 ArrayList와 LinkedList는 List 인터페이스를 구현한 대표적인 클래스들입니다. 이 글에서는 ArrayList와 LinkedList의 차이점, 장단점, 그리고 성능 비교를 다루겠습니다.List 인터페이스의 구현체List 인터페이스를 구현한 대표적인 클래스는 다음과 같습니다:ArrayListLinkedListVectorStack이 중에서 ArrayList와 LinkedList의 차이점을 중점적으로 살펴보겠습니다.ArrayList란?ArrayList는 배열을 기반으로 한 리스트로, 중복을 허용하고 순서를 유지하며 인덱스로 원소들을 관리합니다. 배열과 유사하지만, 배열..