목록알고리즘/이론 (21)
DATA101
본 포스팅에서는 완전 이진 트리(Complete Binary Tree) 자료구조에 대해 알아봅니다. * 완전 이진 트리(Complete Binary Tree) 자료구조란? 완전 이진 트리란 각 노드가 최대 2개의 자식 노드를 갖는 트리 형태의 자료구조로서 마지막 레벨을 제외한 모든 노드는 완전히 채워져 있어야 합니다. 또한, 최하단 레벨의 노드는 좌측만 노드가 채워져 있거나 좌측과 우측 모두 채워져 있어야 하며, 노드를 삽입할 때는 최하단 좌측 노드부터 차례대로 삽입해야 합니다(그림 1 참고). 그림 1 우측 트리는 노드 12의 자식 노드가 우측에만 삽입되어 있기 때문에 완전 이진트리라고 할 수 없습니다. 포스팅 내용에 오류가 있을 경우 댓글 남겨주시면 감사드리겠습니다. 그럼 오늘도 건강한 하루 보내시길..
본 포스팅에서는 파라메트릭 서치(parametric search)에 대해 알아봅니다. 📚 목차 1. 파라메트릭 서치란? 2. 파라메트릭 서치는 언제 사용하면 좋을까? 3. 파라메트릭 서치와 이진 탐색 간의 차이점 4. 파라메트릭 서치의 동작 과정 4.1. 파라메트릭 서치 예시 4.2. 파라메트릭 서치의 시간 복잡도 1. 파라메트릭 서치란? 파라메트릭 서치는 최적화 문제를 결정 문제로 바꾸어 풀어 나가는 기법입니다. 여기서 결정 문제란 'yes' or 'no', 즉, '예' 또는 '아니오'로 답하는 문제를 말합니다. 파라메트릭 서치는 주로 특정 조건을 만족하면서 동시에 가장 적합한 변숫값을 찾아나가는 문제에서 활용되며, 이진 탐색(Binary Search)을 이용하여 구현합니다. 예를 들어, 특정 조건을 ..
안녕하세요, 오늘은 그래프(graph) 자료구조와 트리(tree) 자료구조의 차이에 대해 알아봅니다. 그래프 자료구조에 대한 자세한 설명은 아래 링크를 참고해 주세요! heytech.tistory.com/66 [자료구조] 그래프 자료구조에 대해 알아보자!(노드, 간선) 안녕하세요, 오늘은 그래프(graph) 자료구조에 대해 알아보겠습니다. 그래프 자료구조의 구성 그래프는 그림 1 과 같이 노드(Node)와 간선(Edge)으로 표현됩니다. 이때 노드는 정점(Vertext)이라고도 heytech.tistory.com 내용이 간단하므로 아래 표 1 과 같이 정리해 볼 수 있을 것 같습니다. 그래프 자료구조 트리 자료구조 방향성(directionality) 무-/방향 그래프 only 방향 그래프 순환성(circ..
본 포스팅에서는 최단경로(길 찾기)알고리즘 중에서도 플로이드-워셜 알고리즘에 대해 알아봅니다. 📚 목차 1. 최단경로(길 찾기) 알고리즘이란? 2. 플로이드-워셜 알고리즘 개념 3. 플로이드-워셜 알고리즘 특징 4. 플로이드 워셜 알고리즘의 동작 과정 5. 플로이드 워셜 알고리즘 구현(Python) 1. 최단경로(길찾기) 알고리즘이란? 최단경로 알고리즘은 길찾기 알고리즘이라고도 불리며, 말 그대로 특정 지점까지 가장 빠르게 도달할 수 있는 경로를 찾는 알고리즘입니다. 이번 포스팅에서는 알고리즘 테스트에서 빈출 최단경로 알고리즘 유형 2가지 중 2번째, 플로이드-워셜 알고리즘에 대해 알아봅니다. 다익스트라 최단경로 알고리즘(Dijkstra Algorithm) 플로이드-워셜 알고리즘(Floyd-Warshal..
📚 목차 1. 최단경로(길찾기) 알고리즘이란? 2. 다익스트라 최단경로 알고리즘이란? 3. 다익스트라 최단경로 알고리즘의 동작 과정 4. 구현 방법1: 일반적인 구현 4.1. 코드 해설 4.2. 전체 코드 4.3. 시간 복잡도 5. 구현 방법2: 시간 복잡도 개선 5.1. 우선순위 큐(Priority Queue) 자료구조 5.2. 힙(Heap) 자료구조 5.3. 우선순위 큐 자료구조 기반의 알고리즘 동작 과정 5.4. 우선순위 큐 자료구조 기반 알고리즘 구현(Python) 1. 최단경로(길찾기) 알고리즘이란? 최단경로 알고리즘은 길찾기 알고리즘이라고도 불리며, 말 그대로 특정 지점까지 가장 빠르게 도달할 수 있는 경로를 찾는 알고리즘입니다. 알고리즘 테스트에서 빈출 최단경로 알고리즘 유형은 아래와 같습니..
📚 목차 1. 힙 자료구조 2. 힙 자료구조는 언제 사용할까? 3. 힙 자료구조의 종류 4. 힙 자료구조의 동작 과정(최소 힙) 4.1. 데이터 삽입 4.2. 데이터 삭제 5. 힙 자료구조 구현(Python) 5.1. heapq 셋업 5.2. 힙 데이터 삽입(heappush) 5.3. 힙 데이터 삭제(heappop) 5.4. 리스트를 힙으로 변경(heapify) 1. 힙 자료구조 힙 자료구조는 가장 높은(혹은 가장 낮은) 우선순위(e.g., 최댓값, 최솟값)를 가지는 노드를 빠르게 찾아내기 위해 고안된 *완전 이진트리(Complete Binary Tree) 기반의 자료구조입니다. 따라서 가장 높은(또는 가장 낮은) 우선순위를 가지는 노드가 항상 루트 노드(root node)에 오는 게 특징입니다. * 완..
📚 목차 1. 우선순위 큐(Priority Queue)란? 2. 힙(Heap) 자료구조 2.1. 힙 자료구조란? 2.2. 우선순위 큐 구현 방식: 리스트 vs 힙 3. 힙 기반의 우선순위 큐 구현(Python) 3.1. heapq 라이브러리 소개 3.1.1. 힙 원소 추가(heappush) 3.1.2. 힙 원소 삭제(heappop) 3.1.3. 리스트를 힙으로 변경(heapify) 3.2. 힙 기반의 우선순위 큐 구현 예시 1. 우선순위 큐(Priority Queue)란? 우선순위 큐는 말 그대로 우선순위가 가장 높은 데이터를 가장 먼저 추출하는 자료구조입니다. 일반적으로 큐(Queue) 자료구조는 선입선출 방식으로서 가장 먼저 삽입된 데이터를 가장 먼저 추출합니다. 간단하게 특징이 유사한 자료구조들의 ..
본 포스팅에서는 그래프(graph) 자료구조에 대해 알아봅니다. 그래프 자료구조의 구성 그래프는 그림 1 과 같이 노드(Node)와 간선(Edge)으로 표현됩니다. 이때 노드는 정점(Vertext)이라고도 불립니다. 일반적으로 노드와 간선은 각각 도시와 도시를 잇는 도로를 예시로 많이 표현됩니다. 즉, A 도시(노드)와 B 도시(노드)가 있을 때, A 도시에서 B 도시로 이동하기 위해 도로(간선)를 거친다고 생각하시면 노드와 간선에 대한 이해가 쉬울 것입니다. 그래프 탐색? 그래프 탐색이란 하나의 노드에서 시작해서 다른 노드들을 방문하는 것을 의미합니다. 노드 인접? 두 노드가 간선으로 연결되어 있다면, '두 노드는 인접(Adjacent)해 있다'라고 말합니다. 그래프 자료구조 관련 용어 정리 그래프(트..