본문 바로가기

CS/Data Structure7

HashTable 특징 및 Hash 인덱스 그간 자료구조에 대한 제대로 된 이해 없이 겉핥기식 공부했던걸 반성하면서 특히나 해시는 많이 사용되는 기본 자료구조인데 최근 동작 방식에 대해 묻는 질문에 정말 일차원적인 생각밖에 떠오르지 않아서 부끄러운 마음으로 오랜만에 포스트를 올려본다. HashTable 우선 해시는 임의의 크기를 가진 데이터를 고정된 크기의 값으로 매핑하는 함수를 말하고 이렇게 변환된 값을 해시 값(Hash Value)이라고 한다. 해시 테이블은 이러한 해시 함수(Hash Function)를 사용하여 데이터를 저장하고 검색할 수 있는 자료 구조이다. 여기서 해시 함수는 예를 들어 5,8,13,21,27 이라는 값들이 있으면 이를 13으로 나눈 나머지 값인 5,8,0,8,1 해시값으로 변환시키는 기능을 하는데 해시 테이블에서는 이런.. 2023. 4. 9.
Dequeue(Double-ended Queue) Dequeue란 Dequeue 는 큐의 양쪽으로 데이터의 삽입 및 삭제 처리를 할 수 있는 자료구조로 입출력 방향에 따라 큐 혹은 스택으로 사용할 수 있다. 덱은 인터페이스로 구성되어 있기 때문에 이를 구현한 ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 등의 클래스들이 있으며 해당 클래스들을 통해 덱을 생성한다. Dequeue의 사용 element 추가 public class Dequeue01{ Dequeue dq = new ArrayDequeue(); dq.addFirst("hi");//Deque 맨 앞에 데이터 삽입, 용량 초과하는 경우 Exception 발생 dq.offerFirst("hii");//Deque 맨 앞에 데이터.. 2022. 9. 11.
Tree(트리) https://jongminlee0.github.io/2021/02/21/treeandgraph/ [Algorithm] Tree(트리)와 Graph(그래프) - Jongmin's Blog 알고리즘을 푸는 과정에서 트리와 그래프 부분이 상당히 까다롭게 느껴져 정리하게 되었습니다. 트리와 그래프는 최악의 수행시간과 평균 수행 시간이 매우 크게 바뀔 수 있어서, 알고리즘을 JongMinLee0.github.io https://yoojin99.github.io/cs/%EA%B7%B8%EB%9E%98%ED%94%84,-%ED%8A%B8%EB%A6%AC,-BFS,-DFS/ r그래프, 트리, BFS, DFS 내가 하고 싶은 것을 하는 블로그 yoojin99.github.io 2022. 6. 15.
Graph(그래프) 그래프 개요 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조 그래프와 트리 그래프 트리 정의 노드 간을 연결하는 간선으로 구성된 자료구조 그래프의 한 종류 방향성이 있는 비순환 그래프)의 한 종류 방향성 방향 그래프 무방향 그래프 방향 그래프 사이클 사이클 O 자체 간선 O 순환 그래프,비순환 그래프 사이클 X 자체 간선 X 비순환 그래프 루트 노드 - 최상위에 루트 노드 존재 노드 간 관계 부모-자식 관계x 노드 간 2개 이상의 경로 가능 부모-자식 관계 (모든 자식 노드는 한 개의 부모 노드만을 가짐) 모델 네트워크 모델 계층 모델 순회 DFS,BFS DFS,BFS 중 전위/중위/후위 순회 간선의 수 그래프에 따라 간선의 수가 다름 (간선이 없을 수도 있음) 노드가 N개인 트리는 항상 N-1.. 2022. 6. 14.
LRU Cache https://doublesprogramming.tistory.com/254 LRU Cache ch12-least-recently-used-chache.md 본 글은 Udemy의 자바 자료구조 강의를 듣고 개인적으로 학습한 내용 복습하기 위해 작성된 글로 내용상 오류가 있을 수 있습니다. 오류가 있다면 지적 부탁 드리겠습니 doublesprogramming.tistory.com +삽입정렬을 이용한 문제 풀이 2022. 6. 8.
Queue(작성중) Queue Enqueue 동작 add(value),offer(value) 메소드를 사용해 큐의 맨 뒤쪽에 값을 넣을 수 있다. 두 메소드의 차이점은 공간의 제약이 있을 때 발생한다. add()의 경우 큐가 꽉차는 상황에서 IllegalExeption을 발생시키고 같은 상황에서 offer()은 false를 리턴한다. 따라서 사이즈 제약이 있는 큐를 사용할 경우 offer()를 주로 사용한다. Dequeue 동작 poll(value),remove(value) 메소드를 사용해 큐의 맨 앞쪽 값을 제거할 수 있다. 두 메소드의 차이점은 큐가 비어있을 때 발생한다. poll()은 큐가 비어있을 경우 null을 리턴하고 remove()는 NoSuchElementException을 발생시킨다. 한번에 큐에 있는 모든.. 2022. 6. 1.