전체 글37 스택(Stack)과 LIFO: 프링글스 통에서 배우는 데이터의 흐름 개발자 면접이나 전공 시험에서 가장 단골로 등장하는 자료구조 중 하나가 바로 스택(Stack)입니다. 이름부터가 '무더기', '쌓아 올리다'라는 뜻을 가진 스택은 컴퓨터의 동작 원리를 이해하는 데 있어 필수적인 개념입니다. 복잡한 수식이나 코드로 배우기 전에, 편의점에 가면 흔히 볼 수 있는 '프링글스 감자칩'을 떠올려 보세요. 스택의 모든 원리가 그 통 안에 담겨 있습니다.1. 스택의 대원칙: 후입선출 (LIFO)스택을 정의하는 단 하나의 규칙은 LIFO(Last In, First Out)입니다. 우리말로는 '후입선출', 즉 "가장 나중에 들어온 것이 가장 먼저 나간다"는 뜻입니다.1-1. 프링글스 통의 비유프링글스 통은 바닥이 막혀 있고 입구는 위쪽 하나뿐입니다. 1. Push (넣기): 공장에서 감.. 2026. 2. 11. 배열 vs 연결 리스트, 상황별로 골라 쓰는 결정적 차이점 개발자가 데이터를 다룰 때 가장 먼저 고민해야 하는 것은 "이 데이터를 어디에, 어떻게 저장할까?"입니다. 이때 가장 기본이 되는 선택지가 바로 배열(Array)과 연결 리스트(Linked List)입니다. 두 자료구조 모두 데이터를 순서대로 저장한다는 점은 같지만, 메모리를 사용하는 방식과 효율성 측면에서는 정반대의 성격을 가지고 있습니다. 마치 지정석 영화관과 보물찾기의 차이와도 같습니다. 이 두 구조의 차이를 명확히 이해하고 상황에 맞춰 골라 쓰는 능력이야말로 초보와 고수를 가르는 기준이 됩니다.1. 배열(Array): 속도의 제왕, 유연성의 부족배열은 가장 친숙하고 기본적인 자료구조입니다. 배열의 핵심은 '연속성'입니다. 메모리상의 공간을 미리 예약해서 빈틈없이 채워 넣는 방식입니다.1-1. 영화.. 2026. 2. 10. 자료구조 공부, 무엇부터 할까? 초보자를 위한 단계별 로드맵 코딩 테스트를 준비하거나 기본기를 다지기 위해 서점에 가서 자료구조 전공 서적을 펼치면, 숨이 턱 막힙니다. 배열, 스택, 큐, 힙, 트라이, 레드블랙트리... 도대체 무엇부터 공부해야 할지, 어디까지 깊게 파야 할지 감이 잡히지 않기 때문입니다. 무작정 순서대로 공부하다가는 난이도가 급격히 올라가는 구간에서 포기하기 십상입니다. 20년 차 개발자가 추천하는, 비전공자도 따라 할 수 있는 가장 효율적인 자료구조 학습 순서를 단계별로 정리해 드립니다.1단계: 기초 체력 다지기 (필수 중의 필수)이 단계의 자료구조들은 모르면 코딩 자체를 할 수 없는 수준입니다. 언어의 문법처럼 자연스럽게 쓸 수 있어야 합니다.배열 (Array) & 연결 리스트 (Linked List): 데이터 저장의 기본입니다. 특히 메모.. 2026. 2. 9. 복잡한 시간 복잡도? Big-O 표기법 5분 만에 완벽 이해하기 (O(1) vs O(n)) 알고리즘 공부를 시작하면 가장 먼저 마주치는 외계어가 바로 `O(n)`, `O(log n)` 같은 빅오 표기법(Big-O Notation)입니다. "코드가 돌아가기만 하면 됐지, 왜 이런 수학 기호까지 알아야 해?"라고 생각할 수 있지만, 이는 내 코드의 성적표와 같습니다. 내가 짠 코드가 1초 만에 실행될지, 아니면 1년이 걸릴지를 예측할 수 있게 해주는 유일한 척도이기 때문입니다. 오늘은 수학적 정의는 잠시 접어두고, 개발자 관점에서 시간 복잡도를 아주 쉽고 직관적으로 이해해 보겠습니다.1. 시간 복잡도란? (절대 시간이 아니다)많은 초보자가 오해하는 것이 있습니다. 시간 복잡도는 코드가 실행되는 '초(Seconds)'를 의미하지 않습니다. 컴퓨터의 사양(CPU, RAM)이 좋을수록 실행 시간은 빨라.. 2026. 2. 8. 이진 탐색 트리(BST) 삭제 로직 (3가지 케이스) 이진 탐색 트리(Binary Search Tree, BST)에서 데이터를 검색(Search)하거나 삽입(Insert)하는 과정은 비교적 직관적입니다. 하지만 기존 데이터를 삭제(Delete)하는 연산은 훨씬 복잡하고 까다롭습니다. 그 이유는 노드를 단순히 제거하는 것에 그치지 않고, 삭제 후에도 '모든 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 크다'는 BST의 고유한 구조적 속성을 유지하기 위해 트리를 재정렬해야 하기 때문입니다. 이 글에서는 BST 삭제 시 발생할 수 있는 3가지 상황(Case)을 분석하고, 각 상황에 맞는 알고리즘 처리 방식을 코드로 구현해 봅니다.1. 삭제할 노드의 3가지 케이스 분석삭제 로직을 설계할 때는 삭제하려는 노드가 자식 노드를 몇 개 가지고 있느냐에 따라 접근 .. 2026. 2. 7. 최소 힙 vs 최대 힙 완벽비교 (삽입, 삭제 과정) 컴퓨터 과학에서 힙(Heap)은 최댓값이나 최솟값을 빠르게 찾아내기 위해 고안된 완전 이진 트리(Complete Binary Tree) 기반의 자료구조입니다. 일반적인 이진 탐색 트리(BST)가 데이터의 탐색에 최적화되어 있다면, 힙은 데이터의 우선순위 관리에 특화되어 있습니다. 특히 삽입과 삭제 연산이 일어날 때마다 스스로 구조를 재정렬하는 자가 균형 기능을 갖추고 있어, 우선순위 큐(Priority Queue)나 힙 정렬(Heap Sort)의 핵심 엔진으로 사용됩니다. 이 글에서는 최소 힙과 최대 힙의 구조적 차이점을 분석하고, 데이터가 추가되고 삭제되는 내부 매커니즘을 상세히 다룹니다.1. 최소 힙(Min Heap) vs 최대 힙(Max Heap) 개념 정의힙의 종류는 부모 노드와 자식 노드 간의 .. 2026. 2. 6. 이전 1 2 3 4 5 6 7 다음