전체 글 75

LinkedHashSet - Java

LinkedHashSetLinkedHashSet은 Java의 Set 구현체로, HashSet의 성능에 입력 순서 유지 기능을 추가한 순서 있는 집합입니다.내부적으로 HashMap + Doubly Linked List 구조를 사용하여 요소의 순서를 기억합니다.주요 특징자료구조HashMap + 이중 연결 리스트정렬 여부✅ 입력 순서 유지중복 허용❌ (Set의 기본 특성)null 허용✅ (단 하나만 허용)시간 복잡도add, remove, contains 평균 O(1)차이점HashSet보다 약간 느리지만 순서를 기억함대표 메서드package structure.set.linkedhashset;import java.util.LinkedHashSet;public class LinkedHashSetClass { ..

자료구조 2025.04.30

HashSet - Java

HashSetHashSet은 Java에서 제공하는 Set 인터페이스의 구현체로, 중복을 허용하지 않고, 저장된 순서를 유지하지 않으며,빠른 검색/추가/삭제 성능을 갖춘 자료구조입니다. 주요 특징자료구조내부적으로 HashMap 기반정렬 여부❌ (저장 순서 보장 X)중복 허용❌ (Set의 기본 특성)null 허용✅ (단 하나의 null 값만 허용)시간 복잡도대부분의 연산은 평균 O(1)대표 메서드package structure.set.hashset;import java.util.HashSet;public class HashSetClass { private final HashSet hashSet; public HashSetClass(HashSet hashSet) { this.hashSe..

자료구조 2025.04.30

TreeSet - Java

알고리즘에 자주 사용되는 자료구조를 정리를 한 지 며칠이 지나지 않았는데 벌써 Set 자료구조입니다. Set 자료구조 다음으로는 Map 자료구조로 마무리를 맺을 예정입니다. 이 후에는 번외로 자주 사용되는 메소드에 대해서 정리를 할 계획입니다.TreeSetTreeSet은 Java에서 제공하는 정렬된 집합(Set) 입니다.내부적으로 이진 탐색 트리(Red-Black Tree) 기반으로 구현되어 있으며, 자동으로 정렬된 상태를 유지하며 중복을 허용하지 않습니다. 주요 특징자료구조이진 탐색 트리 기반 (Red-Black Tree)정렬 순서기본은 오름차순, Comparator 지정 가능중복 허용❌ 중복된 값 저장 불가null 허용❌ (비교 불가능하므로 NullPointerException 발생)검색/삽입/삭제O..

자료구조 2025.04.30

PriorityQueue - Java

PriorityQueuePriorityQueue는 우선순위 기반으로 요소를 정렬하여 저장하는 자료구조입니다.일반적인 Queue(FIFO)와는 다르게, 항상 우선순위가 가장 높은 요소가 먼저 나오는 특징을 가집니다.Java에서는 내부적으로 힙(Heap) 자료구조를 사용하여 구현되어 있습니다.주요 특징자료구조최소 힙(Min-Heap) 기반 (기본적으로 가장 작은 값이 우선)크기 조정필요 시 배열을 2배로 확장삽입 속도O(log n) (힙 특성 유지)삭제 속도O(log n) (힙 재정렬)탐색 속도 (peek)O(1) (최상단 요소 바로 접근)중복 허용O (같은 값을 여러 번 저장 가능)null 허용❌ (null 저장 시 NullPointerException)대표 메서드package structure.prior..

자료구조 2025.04.29

ArrayDeque - Java

ArrayDequeArrayDeque는 Java에서 제공하는 배열 기반 양방향 큐(Deque) 구현체입니다.LinkedList보다 더 빠르고, Stack과 Queue를 대체할 수 있는 고성능 자료구조입니다.null 요소는 저장할 수 없습니다.주요 특징자료구조배열 기반 (원형 배열)크기 조정필요 시 배열을 2배로 확장 (자동 확장)접근 속도양 끝에서 빠른 접근 가능 (O(1))삽입/삭제 속도front, rear 모두 O(1)중복 허용O (같은 값 여러 번 저장 가능)null 허용❌ (null 값 저장 시 NullPointerException)대표 메서드package structure.arraydeque;import java.util.ArrayDeque;public class ArrayDequeClass {..

자료구조 2025.04.28

Deque - Java

DequeDeque(Deque = Double Ended Queue, 양방향 큐) 는 양쪽 끝(front, rear) 모두에서 삽입과 삭제가 가능한 자료구조입니다.Java에서는 Deque 인터페이스를 제공하며, 일반적으로 LinkedList나 ArrayDeque로 구현합니다.구현체 비교 항목 LinkedList ArrayDeque 구조노드 기반 (이중 연결 리스트)배열 기반 (원형 배열 구조)삽입/삭제 속도양쪽 끝 삽입/삭제 빠름 (O(1))양쪽 끝 삽입/삭제 빠름 (O(1))중간 접근/수정느림 (O(n))불가능(중간 인덱스 접근 지원 안 함)메모리 사용각 노드마다 추가 메모리(포인터 2개) 필요배열 크기만큼 메모리 연속 확보 필요성능많은 삽입/삭제 작업에 유리빠른 삽입/삭제 + 메모리 효율성 높음 ..

자료구조 2025.04.28

Queue - Java

QueueQueue는 FIFO(First In First Out, 선입선출) 방식으로 동작하는 자료구조입니다.Java에서는 Queue 인터페이스를 통해 다양한 구현체(예: LinkedList, PriorityQueue)를 제공합니다.먼저 추가한 데이터가 가장 먼저 제거되는 특징이 있습니다.주요 특징자료구조노드 기반(LinkedList) 또는 배열 기반(예: ArrayDeque)크기 조정필요에 따라 동적으로 크기를 조정 (특히 LinkedList 기반일 경우)접근 속도front와 rear에서 빠른 접근 가능 (O(1))삽입/삭제 속도front에서 삭제, rear에서 삽입은 빠름 (O(1))중복 허용O (같은 값을 여러 번 저장 가능)null 허용일부 구현체에서는 허용 (LinkedList는 허용, Arra..

자료구조 2025.04.28

Stack - Java

StackStack은 LIFO(Last In First Out, 후입선출) 방식으로 동작하는 자료구조입니다.Java에서는 java.util.Stack 클래스를 통해 제공되며, 기본적으로 Vector를 상속받아 구현되어 있습니다.주요 특징자료구조내부적으로 Vector(배열 기반) 사용크기 조정요소 추가 시 내부 배열을 동적으로 확장 (필요 시)접근 속도top 요소 접근은 빠름 (O(1))삽입/삭제 속도top에 대한 push/pop은 빠름 (O(1))중복 허용O (같은 값을 여러 번 저장 가능)null 허용O (null 값 저장 가능)대표 메서드package structure.stack;import java.util.Stack;public class StackClass { private final St..

자료구조 2025.04.28

LinkedList - Java

지난 포스트인 ArrayList를 이어서 이번에는 LinkedList에 대해서 정리해보겠습니다.LinkedListJava 컬렉션 프레임워크(Collection Framework) 중 하나로, 노드 기반으로 구현된 자료구조입니다.각 요소(Node)가 **데이터(data)**와 **다음 노드(next)**에 대한 참조를 가지고 있어, 삽입과 삭제가 효율적입니다.주요 특징자료구조내부적으로 **노드(Node)**를 연결하여 구성크기 조정삽입/삭제할 때 별도 크기 확장이 필요 없음 (공간은 노드 단위로 동적으로 사용)접근 속도인덱스 접근 시 느림 (O(N)) (앞에서부터 순차 탐색)삽입/삭제 속도처음/끝 삽입·삭제는 빠름 (O(1)), 중간은 느림 (O(N))중복 허용O (같은 값을 여러 번 저장 가능)null ..

자료구조 2025.04.27

ArrayList - Java

이 글을 시작으로 알고리즘에서 자주 사용되는 자료구조의 주요 메소드를 정리하는 포스트를 작성해보겠습니다. 이번 포스트에서는 ArrayList 자료구조에 대해 정리해보겠습니다. ArrayListArrayList는 Java 컬렉션 프레임워크(Collection Framework) 중 하나로, 배열 기반으로 구현된 동적 크기 배열(Dynamic Array) 입니다.배열과 비슷하지만, 크기를 자동으로 조정해주기 때문에 요소를 추가하거나 삭제할 때 편리합니다.주요 특징자료구조내부적으로 배열(Array) 사용크기 조정배열이 꽉 차면, 자동으로 1.5배 또는 2배 크기로 확장접근 속도인덱스로 접근 시 빠름 (O(1))삽입/삭제 속도중간 삽입/삭제는 느림 (O(N)) (이동 필요)중복 허용O (같은 값을 여러 번 저장..

자료구조 2025.04.27