연결 리스트(Linked List) 완전 정복: 메모리 효율적인 동적 자료구조의 모든 것
·
자료구조
자료구조를 공부하다 보면 배열 다음으로 만나게 되는 것이 바로 연결 리스트(Linked List)입니다. 배열의 한계를 보완하면서도 동적으로 크기를 조절할 수 있는 연결 리스트는 많은 프로그래밍 상황에서 핵심적인 역할을 합니다. 오늘은 연결 리스트의 개념부터 실제 구현, 그리고 실무 활용까지 체계적으로 알아보겠습니다.연결 리스트란 무엇인가?연결 리스트는 리스트 내의 요소(노드)들을 포인터로 연결하여 관리하는 선형 자료구조입니다. 마치 기차처럼 각 칸(노드)이 다음 칸을 가리키는 연결고리로 이어져 있다고 생각하면 됩니다.연결 리스트의 핵심 구성 요소노드(Node): 데이터와 다음 요소에 대한 포인터를 가진 기본 단위HEAD: 첫 번째 노드를 가리키는 포인터TAIL: 마지막 노드를 가리키는 포인터// 노드의..
두 개의 스택으로 큐(Queue) 구현하기: 실전 면접에서 마주한 낯선 자료구조 문제
·
자료구조
최근 실전 면접 라이브 코딩에서 "두 개의 스택으로 큐를 구현하라"는 문제를 처음 접했습니다. 평소에는 백준, 프로그래머스 등에서 알고리즘 문제만 풀어왔기에, 이렇게 직접 자료구조를 구현하는 문제는 예상치 못해 당황스러웠습니다. 이 글에서는 그때의 경험을 바탕으로, 문제의 개념과 구현 방법, 그리고 느낀 점을 정리합니다.문제 소개: 알고리즘 문제만 풀다가 만난 직접 구현 과제자료구조 면접에서 "스택(Stack)과 큐(Queue)의 차이"는 종종 등장하지만, 실제로 스택 두 개로 큐를 직접 구현하라는 문제는 저에게도 처음이었습니다. 단순히 개념을 아는 것과, 직접 코드를 짜는 것은 완전히 다르다는 점을 실감했습니다.스택(Stack): LIFO(Last-In-First-Out, 후입선출)큐(Queue): F..
Deque : 양방향 큐의 모든 것
·
자료구조
Python의 collections.deque는 양방향 큐(Double-Ended Queue)를 구현한 자료구조입니다. 이 글에서는 deque의 기본 개념부터 실무에서의 활용까지, Python 개발자라면 알아야 할 모든 것을 설명합니다.1. Deque란 무엇인가?Deque는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조입니다. 일반적인 리스트와 달리, 양쪽 끝에서의 연산이 O(1) 시간 복잡도를 가지는 것이 특징입니다.Deque의 주요 특징양쪽 끝에서의 삽입/삭제가 O(1) 시간 복잡도스레드 안전한 구현크기 제한 설정 가능메모리 효율적인 구현2. Deque의 기본 연산1. 생성과 기본 연산from collections import deque# 기본 생성d = deque()print(d) # deque..