본문 바로가기

CS/Data Structure4

이진 탐색 트리(BST, Binary Search Tree) 특정 자료구조를 사용했을 때의 시간 복잡도나 내부적으로 어떻게 동작하는 지 구체적으로 알고 있는 것도 중요하다는 것을 이번에 뼈저리게 느꼈다 이진 탐색 트리는 이진 트리로 만들어진 탐색을 위한 자료구조이다. 4가지 조건을 가진다. 1. 이진 탐색 트리의 4가지 조건 1) 모든 노드의 키는 유일하다. 2) 왼쪽 서브트리의 모든 키는 루트 노드의 키보다 작다 3) 오른쪽 서브트리의 모든 키는 루트 노드의 키보다 크다 4) 서브트리도 이진탐색트리이다. 2. 이진 탐색트리의 동작 방식 1) 탐색(Search) 위의 이진 탐색 트리에서 14라는 키 값을 찾는다고 생각하면 루트노드 10과 비교했을 때, 14가 더 큼으로 오른쪽 서브 트리로 이동 오른쪽 서브 트리의 루트노드 17과 비교했을 때, 14가 더 작음으로 .. 2020. 5. 23.
LRU Cache 캐시란 속도가 빠른 장치와 속도가 느린 장치 간의 병목현상을 줄이기 위한 범용 메모리로, 지역성을 이용해 사용할 데이터를 예측해 저장한다 쉽게 말하면 사용했던 데이터를 속도가 빠른 저장장치에 저장해놓고, 다음에 참조할때 캐시 메모리를 이용해 빠르게 참조하는 방식이다 LRU는 Least Recently Used의 약자로 가장 최근에 참조되지 않은 데이터가 교체시점에서 먼저 나가는 방식이다. 컴퓨터 구조 전공 수업에서 배운 내용은 아래와 같았다 A, B, C, D 순으로 데이터가 참조되었다면 참조비트는 아래와 같고 A B C D 1 2 3 4 캐시 메모리가 가득 찬 상태에서 캐시 메모리에 있는 데이터 A를 다시 참조할 경우 A B C D 4 1 2 3 캐시 메모리에 없는 데이터 E가 참조될 경우 교체가 일어.. 2020. 5. 22.
[자료구조] ProrityQueue(우선순위큐) - Java Collections Framework PriorityQueue(우선순위큐) 일반적으로 Queue(큐)는 선입선출(FIFO, First In First Out)의 성격을 가지고 있는 자료구조이지만, 우선순위 큐는 들어오는 순서에 상관없이 우선순위가 높은 원소부터 빠져나가는 자료구조이다. 운영체제의 CPU 스케줄링 중 우선순위 스케줄링이 우선순위 큐를 이용한 예이다. java Collections Framework에서 우선순위큐의 자세한 사용법은 아래 코드를 참조하자 package algorithm; import java.util.*; public class priorityQueue { public static void main(String[] args) { PriorityQueue q = new PriorityQueue(); // 데이터 저장.. 2020. 3. 23.
[자료구조] HashMap(해쉬맵) - Java Collections Framework HashMap(해쉬맵) HashMap이란 Map인터페이스 중 하나로써, key와 Value값으로 묶어 데이터를 저장하는 자료구조이다. Hashing을 사용하므로써 많은양의 데이터를 검색하는데 뛰어난 성능을 가지고 있다. java Collections Framework에서 해쉬맵의 자세한 사용법은 아래 코드를 참조하자 package algorithm; import java.util.*; public class hashmap { public static void main(String[] args) { HashMap map = new HashMap(); // 데이터 삽입 map.put("apple", 2018); map.put("banana", 2011); map.put("melon", 2013); map.p.. 2020. 3. 23.