2025/06 6

연결 리스트(Linked List)

연결리스트란?데이터를 저장할 때 각 요소가 다음 요소의 주소(또는 포인터)를 함께 저장하는 선형 자료구조이다. 배열과 달리 연속되지 않은 위치에 저장되며, 노드라고 불리는 단위(Node)로 구성됨. 즉, 노드(Node) 안에는 data와 포인터(next)가 있고, 이러한 노드들의 집합이다. 연결리스트(Linked List) vs 배열(Array) 연결 리스트 배열메모리 구조비연속적으로 할당(노드 단위)연속적으로 할당(한 번에 확보)메모리 할당 방식필요한 만큼 한 개씩 동적 할당전체 크기를 미리 정하고 고정 할당삽입/삭제 효율성노드 연결만 바꾸면 되어 효율적요소 이동이 필요함 -> 비효율적접근 방식순차 접근만 가능(임의 접근 불..

큐(Queue)

큐선입선출(FIFO) 방식으로 데이터를 처리하는 선형 자료구조이다. 가장 먼저 들어온 데이터가 가장 먼저 나가는 특징을 가지고 있다. 구조 장점순차적 처리에 적합하다.구현이 간단함.deque으로 구현 시 메모리 관리 효율이 좋음 단점중간 데이터 접근이 불가능함.배열 기반 큐는 삽입,삭제 시 앞 공간이 낭비됨.복잡한 자료 구조에는 부적합함. 큐의 주요 연산 연산기능시간복잡도enqueue삽입O(1)dequeue삭제O(1)front맨 앞 요소 조회O(1)size() / empty()사이즈/ empty 확인O(1) 리스트로 구현(python)class Queue: def __init__(self): self.q = [] def isEmpty(self): if len(self...

스택(Stack)

스택 한쪽 끝에서만 삽입과 삭제가 이루어지는 선형 자료구조(linear data structure)이다. 가장 나중에 삽입된 데이터가 먼저 삭제되는 LIFO를 따른다. 스택의 장점과 단점장점 : 구현이 쉬움, 삽입과 삭제가 빠르다(O(1)), 재귀적 상황을 자연스럽게 표현 가능단점 : 중간요소 접근 불가, LIFO 구조로 인해 일부 알고리즘에 부적합하다, 크기 제 스택을 왜 사용할까? 후입선출 구조가 필요한 문제 해결함수 호출 관리 (Call Stack)괄호 검사, 수식 계산기DFS(깊이 우선 탐색)와 백트래킹Undo/Redo 기능 (웹브라우저, 텍스트 에디터 등) 스택 주요 연산함수 이름기능시간복잡도push()삽입O(1)pop()삭제 및 반환O(1)is_empty()비어있는지 확인O(1)size(..

자료구조란?

자료구조는 컴퓨터 프로그래밍의 핵심 구성 요소이다. 자료구조를 데이터를 어떻게 정리하고, 저장하며, 조작할 것인가를 정의한다.효율적이고 효과적인 알고리즘을 개발하기 위해서 자료구조에 대한 이해는 필수적이다. 자료구조?데이터를 저장하고, 정리하기 위한 구조이다. 즉, 컴퓨터에서 데이터를 효율적으로 접근하고, 업데이트할 수 있도록 정렬하는 방법이다.자료구조는 단순히 데이터를 저장하는 것뿐 아니라, 데이터 처리, 검색, 저장에도 사용된다. 자료구조의 분류선형 자료구조데이터들이 순차적, 직선적으로 나열되어 있는 구조이다.각 요소는 이전과 다음이 연결되어 있다.ex) 배열(Array), 스택(Stack), 큐(Queue), 연결 리스트(Linked List) 비선형 자료구조데이터들이 비순차적, 비직선적으로 나열되..