Heap❓
·
Language/Java
Heap❓완전 이진 트리 형태최대, 최소 값을 빠르게 찾아내는데 유용한 자료구조우선순위 큐(Priority Queue)와 같은 다른 추상 자료형의 구현에 주로 사용Heap의 종류최소 힙 (Min Heap)루트노드가 최솟값이 되고, 부모노드의 key는 자식노드의 key보다 작아야 한다는 규칙최대 힙 (Max Heap)루트노드가 최댓값이 되고, 부모노드의 key가 자식 노드의 key보다 커야 한다는 규칙Heap 장점 및 단점장점빠른 삽입과 삭제: Heap은 정렬된 상태를 유지하므로 삽입과 삭제 연산이 상수 시간(O(log n))에 이루어짐우선순위 기반 처리: 최대 힙(Max Heap)의 경우에는 가장 큰 우선순위를 가진 요소에 빠르게 접근 가능, 최소 힙(Min Heap)의 경우에는 가장 작은 우선순위를 가..
LinkedList❓
·
Language/Java
LinkedList❓각 노드가 데이터와 포인터를 가지고 하나로 연결되어 있는 방식의 자료구조데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당LinkedList 장점 및 단점장점빠른 삽입과 삭제: 각 노드가 다음 노드의 주소를 알고 있어 삽입과 삭제 연산이 노드의 재배치 없이 수행 가능동적 크기 조절: 동적으로 삽입 및 삭제 가능, 메모리 유연하게 할당 및 해제가 가능하여 메모리를 효율적으로 관리 가능단점임의 접근의 어려움: 데이터를 순차적으로 접근해야하므로 임의 접근이 어려움추가적인 메모리 공간의 필요: 각 노드마다 다음 노드를 가리키는 포인터를 유지해야 하므로 추가적인 메모리 공간이 필요함검색 시간: 데이터를 처음부터 순차적으로 접근해야 하므로 검색 작..
HashMap❓
·
Language/Java
HashMap❓Map 인터페이스를 구현한 대표적인 Map 컬렉션Map의 성질을 그대로 가지고 있기 때문에 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가짐해싱(Hashing)을 사용하기 때문에 데이터를 검색하는데 있어 좋은 성능을 가짐HashMap 특징Key에 기반하여 빠른 데이터 액세스를 제공내부적으로 Key의 순서를 보장하지 않음같은 Key를 중복해서 사용할 수 없음, 이미 존재하는 경우 기존 값이 덮어씌워짐어떤 객체든 키로 사용할 수 있음HashMap 사용법HashMap 선언import java.util.Map;import java.util.HashMap;Map hashMap = new HashMap(); HashMap 값 추가 및 수정Map map = new HashMap();map.pu..
Array & ArrayList❓
·
Language/Java
Array❓Array는 같은 타입의 데이터를 연속된 공간에 나열각 데이터에 인덱스(index)를 부여해놓은 자료구조Array 특징배열은 같은 타입의 데이터만 저장 가능한 번 생성된 배열은 길이를 늘리거나 줄일 수 없음Array 장점 및 단점장점빠른 접근: 배열은 인덱스를 사용하기 때문에 인덱스를 알고 있다면 원하는 위치에 O(1)에 접근 가능다차원 배열: 배열은 다차원으로 선언 가능메모리 공간의 효율성: 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간을 효율적으로 사용 가능, 또한 배열의 요소들은 순서대로 저장되기 때문에 캐시 지역성이 좋아 성능 향상에 도움이 됨단점크기 제한: 배열은 생성할 때 크기를 정하고 후에 변경이 불가함 (크기를 동작으로 제어 불가)삽입과 삭제 비용이 큼: 배열의 중간에 요..
Queue❓
·
Language/Java
Queue❓Queue는 선입선출(First-In-First-Out; LIFO)의 대표적인 선형 자료구조 중의 하나선입선출이란 First-In-First-Out 이라는 뜻 그대로 가장 먼저 들어온 데이터가 가장 먼저 나간다 의 의미프로그래밍에서 데이터가 입력된 순서대로 처리될 때 사용Queue의 특징먼저 들어간 자료가 먼저 나오는 구조 FIFO(First In FIrst Out) 구조큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행함다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행함그래프의 넓이 우선 탐색(BFS)에서 사용컴퓨터 버퍼에서 주로 사용, 여러 개의 입력이 있으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴Queue 사용법Queue 선언import java.ut..
Stack
·
Language/Java
Stack❓Stack은 후입선출(Last-In-First-Out; LIFO)의 대표적인 선형 자료구조 중의 하나후입선출이란 Last-In-First-Out 이라는 뜻 그대로 나중에 들어온 데이터가 가장 먼저 나간다 의 의미프로그래밍에서 데이터가 입력된 순서대로 처리되는 것이 아닌, 가장 나중에 들어온 데이터를 먼저 처리할 때 사용Stack의 특징먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 구조시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 함인터럽트 처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임재귀(Recursion) 함수를 호출 할 때 사용그래프의 깊이 우선 탐색(DFS)에서 사용시간복잡도연산평균 소모 시간최악 소모 시간Ac..