셋 (Set)
Set은 데이터의 중복을 허용하지 않는 자료구조이다. 개발을 하다가 중복되지 않는 값을 저장하고 싶다면 Set을 이용하면 된다. Set은 해시 테이블을 이용하기 때문에 비교적 쉽게 구현할 수 있다. 해시 테이블을 사용한다고 해서 HashSet이라고도 불리기도 한다 핵심 특징 HashSet의 추상 자료형 HashSet 클래스…
Set은 데이터의 중복을 허용하지 않는 자료구조이다. 개발을 하다가 중복되지 않는 값을 저장하고 싶다면 Set을 이용하면 된다. Set은 해시 테이블을 이용하기 때문에 비교적 쉽게 구현할 수 있다. 해시 테이블을 사용한다고 해서 HashSet이라고도 불리기도 한다 핵심 특징 HashSet의 추상 자료형 HashSet 클래스…
해시 테이블은 여러 프로그래밍 언어에서 해시(Hash), 맵(Map), 해시맵(HashMap), 딕셔너리(Dictionary) 등 다양한 이름으로 불린다. 이름에서 알 수 있듯이 해시(Hash)와 테이블(Table)이라는 두 가지 핵심 개념이 결합된 자료구조이다. 해시 테이블은 데이터 검색, 삽입, 삭제에 있어서 좋은 성능을 자랑하며, 많은 프로그래밍 언어의 내부 자료구조로…
단방향 연결 리스트(Singly Linked List)는 각 노드가 다음 노드(next)만을 참조하기 때문에, 이전 노드로 역방향 탐색이 불가능하다는 한계가 있다. 이를 해결하기 위해 고안된 구조가 이중 연결 리스트(Doubly Linked List)이다. 이중 연결 리스트는 각 노드가 이전 노드(prev)와 다음 노드(next)의 참조를 모두 가지며,…
서명의 필요성 우리는 일상에서 중요한 서류(계약서 등)에 도장을 찍거나 서명한다. 이는 계약 내용이 유효함을 약속하는 행위이다. 그런데 만약 누군가 도장을 위조해서 나를 사칭한다면? 이는 명백한 사기 행위이다. 따라서 다음과 같은 보안 요구사항이 필요하다 인터넷 환경에서도 이러한 보안이 반드시 필요하기 때문에…
Deque(덱)은 스택(Stack)과 큐(Queue)의 장점을 모두 결합한 유연한 자료구조로 (Deque: Double-Ended Queue) 덱은 이름 그대로 ‘양방향’에서 삽입과 삭제가 가능한 자료구조이다. 스택인 “Last In First Out (LIFO)” 방식으로 한쪽(보통 top)에서만 데이터를 넣고 뺄 수 있다. 큐는 “First In First Out (FIFO)” 방식으로…
데이터 처리의 순서가 중요한 상황에서 스택(Stack)과 함께 가장 기본적이면서도 중요한 자료구조 중 하나다 바로 큐(Queue)이다. 큐는 ‘선입선출(First In First Out, FIFO)’이라는 원칙을 따르며, 이는 가장 먼저 삽입된(Enqueue) 데이터가 가장 먼저 제거되는(Dequeue)구조를 의미한다. 일상생활에서 ‘줄 서기’와 같다 큐의 기본 개념과 원리…
데이터를 저장하고 관리하는 방식은 프로그램의 효율성과 복잡성에 큰 영향을 미친다. 다양한 자료구조 중 스택(Stack)은 ‘후입선출(Last In First Out, LIFO)’이라는 단순하지만 강력한 원칙을 따르는 추상 자료형(Abstract Data Type)이다. 이 원칙은 가장 나중에 삽입된(Pushed) 데이터가 가장 먼저 제거되는(Popped)구조를 의미한다 스택의 기본 개념과…
데이터를 효율적으로 저장하고 관리하는 것은 프로그래밍의 기본과 기초이자 핵심 과제이다. 여러 자료구조 중에서도 배열(Array)과 연결 리스트(Linked List)는 기본적인 형태이며, 각각의 고유한 특성으로 인해 다양한 상황에서 활용된다. 배열의 한계와 연결 리스트의 등장 배열의 장점 배열의 단점 배열의 단점을 해결하기 위해 고민했고,…
시간 복잡도 (Time Complexity) 평균을 구하는 문제를 두 종류의 자료구조(변수, 배열)를 사용해서 각각에 맞는 알고리즘으로 해결할 수 있다. 변수는 변수에 맞는 알고리즘, 배열은 배열에 맞는 알고리즘을 이용해서 해결한다. 심지어 같은 자료구조를 쓰더라도 알고리즘은 여러 가지가 될 수 있다는 것도 확인할…
자료구조 (Data Structure) 자료구조란, 데이터가 어떤 방식으로 저장되고 그 저장된 데이터를 어떻게 효율적으로 관리・사용할지를 정의하는 방법을 의미한다. 프로그래밍을 배우면서 의식하지 못했더라도 이미 다양한 자료구조들을 사용해왔을 것이다가장 단순한 자료구조는 변수(Variable)이다. 숫자나 문자열과 같은 단일 데이터를 저장하기 위해 변수를 사용한다. 그리고 저장한…