전체 글16 스택(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. 이전 1 2 3 다음