자료구조 3

[2025-05-03 / Day 71] 해시(Hash)와 힙(Heap) 핵심 정리

✅ 해시(Hash Table)일반적으로 "해시"라고 하면 이 해시 테이블을 줄여서 부르는 표현입니다.해시 테이블은 키-값 쌍을 저장하는 자료구조입니다.Key를 해시 함수에 넣어서 배열의 인덱스로 변환하고,그 위치에 데이터를 저장하거나 검색하는 방식으로 동작합니다. 이 구조 덕분에 탐색, 삽입, 삭제 모두 평균 O(1)의 시간복잡도를 가지며,연관 데이터 저장이나 키 기반 조회가 매우 빠르고 직관적입니다. C++ STL에서는 unordered_map이 대표적인 해시 기반 컨테이너입니다. 아래에서는 해시 테이블의 개념에 대한 추가 설명과 동작하는 원리에 대해 설명하겠습니다.해시 테이블에 데이터를 저장할 때, 저장을 하는 과정이 있습니다. 저장할 때는 먼저 해시 함수(hash function) 를 이용해 키(K..

자료구조 2025.05.03

[2025-05-03 / Day 70] STL - 스택(Stack)과 큐(Queue) 핵심 정리

✅ 스택(Stack)자료구조의 스택은 메모리에서 나오는 개념인 스택 영역(Stack)과는 다른 개념입니다. 스택은 자료구조 중 하나로, 가장 나중에 들어간 데이터가 가장 먼저 나오는 LIFO(Last In, First Out) 구조를가진 선형 구조입니다. 즉, 쌓는 방향과 꺼내는 방향이 같은 구조이며 "후입선출"이라는 특징을 갖고 있습니다.✅ 스택의 구조와 동작 방식스택은 보통 배열 또는 연결리스트를 이용해 구현됩니다.보통 배열의 끝부분(Top이라고 부름)에서만 데이터를 넣거나(push) 꺼내는(pop) 연산이 일어나는 구조입니다.[ ] → 빈 스택push(10) → [10] push(20) → [10, 20] push(30) → [10, 20, 30] pop() → [10, 20] // 3..

자료구조 2025.05.03

[2025-05-02 / Day 69] STL - 벡터(Vector)와 리스트(List) 핵심 정리

벡터벡터는 STL에서 제공하는 동적 배열 컨테이너입니다. 여기서 동적이란?런타임 중에 배열의 크기가 자동으로 늘어날 수 있다는 뜻입니다.그 기준은 크기를 초과하면 더 큰 새 배열의 크기로 만들고, 기존 데이터를 복사해서 옮긴 뒤 기존 배열은 삭제합니다.벡터의 특징메모리가 연속적이어서 데이터의 접근이 빠르고 캐시 효율이 높지만, 마지막 인덱스를 제외한 중간 삽입/삭제는 느립니다. 여기서 위 문장에 의문이 드는 점을 다 정리했습니다.메모리가 연속적이라는 것은 어떤 의미일까?메모리가 연속적이라는 말은, 데이터들이 메모리 상에서 줄줄이 한 줄로 이어져 있다는 뜻입니다.각 데이터들은 고유한 메모리 주소를 갖고 있습니다.예를 들어, int 자료형이 4바이트라 가정할 때 메모리 구조는 이런식으로 됩니다.[100번지]..

자료구조 2025.05.02