목록Data Structure (7)
YS's develop story
👨🏼💻 Graph (그래프) 정리 With Python 🥝 Graph 란? 실제 세계의 현상이나 사물을 Vertex(정점)와 Edge(간선)로 표현하기 위해 사용합니다. Vertex : 위치를 말합니다. Node라고 하기도 합니다. Edge : 위치 간의 관계를 표시한 선입니다. Degree : 방향이 없는 그래프에서 하나의 정점에 인접한 정점의 수입니다. Simple Path : 처음 정점과 끝 정점을 제외하고 중복된 정점이 없는 경로입니다. (A-B-C는 Simple Path) Cycle : Simple Path의 시작 정점과 종료 정점이 동일한 경우입니다. 🍋 그래프의 종류 Undirected Graph 방향이 없는 그래프입니다. Edge를 통해 Vertex 양 방향으로 갈 수 있습니다. Dire..
👨🏼💻 Heap (힙) 정리 With Python 🥝 Heap 이란? 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진트리(Complete Binary Tree)입니다. 완전 이진트리? Node를 삽입할 때 최하단 왼쪽 Node부터 차례대로 삽입하는 Tree 배열에 데이터를 넣고, 최댓값과 최솟값을 찾으려면 O(n) 이 걸리지만 힙에 데이터를 넣고, 최댓값과 최솟값을 찾으면 O(logn) 이 걸리기 때문에 최댓값, 최솟값을 빠르게 찾아야 하는 자료구조 및 알고리즘에 활용됩니다. 힙은 아래의 두 가지 조건을 가지고 있어야 합니다. 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같습니다. 완전 이진트리 형태를 가집니다. 🍋 Heap VS Binary Search Tree 공통점..
👨🏼💻 Tree (트리) 정리 With Python 🥝 Tree란? Node와 Branch를 이용해서 Cycle을 이루지 않도록 구성한 데이터 구조입니다. 🍋 관련 용어 Node : 트리에서 데이터를 저장하는 기본 요소 Root Node : 트리의 최상위 노드 Level : 최상위 노드를 Level 0이라고 했을 때, 하위 Branch로 연결된 노드의 깊이를 나타냅니다. Parent Node : 어떤 노드의 부모 노드 Child Node : 어떤 노드의 자식 노드 Leaf Node : Child Node가 하나도 없는 노드 Sibling : 동일한 Parent Node를 가지는 노드 Depth : 트리에서 Node가 가질 수 있는 최대 Level (위 사진에서의 Depth는 2) 🍊 이진 탐색 트리 이..
👨🏼💻 Hash Table (해시 테이블) 정리 With Python 🥝 Hash Table이란? 키(key)에 데이터(Value)를 저장하는 데이터 구조입니다. Key를 통해 바로 데이터를 받을 수 있으므로, 속도가 매우 빠릅니다. 파이썬에서는 딕셔너리 타입을 사용하면 됩니다. 🍋 간단한 해시 예시 hashTable = [0 for i in range(20)] def hashFunction(key): return key % 8 def insertToHashTable(data, value): key = ord(data[0]) hashAddress = hashFunction(key) hashTable[hashAddress] = value def getFromHashTable(data): key = ord..
👨🏼💻 Linked List (링크드 리스트) 정리 With Python 🥝 Linked List란? 🍈 Linked List 구조 Linked List의 기본 구조는 위 와 같습니다. 노드 : 데이터의 저장 단위, 노드는 데이터와 포인터로 구성되어 있습니다. 포인터 : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간입니다. 배열이 가진 자료구조의 단점을 보완하기 위한 자료구조가 Linked List입니다. 🍉 Linked List 장단점 Linked List에 특정 값을 삭제하거나 추가할 때 위와 같이 별도의 작업을 해주는 로직이 필요로 합니다. 🍊 Linked List 구현 (with Python) class Node: def __init__(self, data): self...
👨🏼💻 Stack (스택) 정리 With Python 🥝 Stack이란? 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 데이터를 제한적으로 접근할 수 있는 구조 가장 나중에 넣은 데이터를 가장 먼저 빼낼 수 있는 구조 LIFO (Last In First Out) 구조 🍋 Process와 Stack def recursive(data): if data 구조가 단순해서 데이터의 읽기, 저장 속도..
👨🏼💻 Queue (큐) 정리 With Python 🥝 Queue란? 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 FIFO (First In First Out ) 구조 특별한 Queue LifoQueue : 나중에 입력된 데이터가 먼저 출력되는 Queue PrioiryQueue : 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 출력되는 Queue 🍇 Queue 관련 함수 import queue queue = queue.Queue() queue 생성 하기 queue.put("밍구리") queue.put("쌈무") enqueue (데이터 넣기) print(queue.get()) dequeue (데이터 추출) -> "밍구리" 출력 print(queue.qsize()) queue 사이즈 계산 ..