라벨이 자료구조인 게시물 표시

Stack과 Queue

  물론이죠! Stack과 Queue는 자료구조의 기본 중 기본이면서도 매우 중요한 개념이에요. 아래에서 개념 설명과 함께 Python과 Java로 각각 구현 예시를 보여드릴게요. 📚 Stack (스택) ✅ 개념 후입선출 (LIFO: Last In, First Out) 구조 가장 마지막에 들어온 데이터가 가장 먼저 나감 예시: 접시 쌓기, 웹 브라우저의 뒤로 가기 🔧 주요 연산 push : 데이터를 스택에 추가 pop : 가장 위의 데이터를 제거하고 반환 peek : 가장 위의 데이터를 확인 (제거하지 않음) isEmpty : 스택이 비어있는지 확인 🐍 Python 구현 (리스트 활용) class Stack: def __init__(self): self.items = [] def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() return None def peek(self): if not self.is_empty(): return self.items[-1] return None def is_empty(self): return len(self.items) == 0 # 사용 예시 stack = Stack() stack.push(10) stack.push(20) print(stack.pop()) # 20 print(stack.peek()) # 10 ☕ Java 구현 import java.util.*; public class StackExample { public static void main(String[] args) { Stack<Integer> stack = new ...

스택(Stack)과 큐(Queue)

  좋습니다 👍 Stack(스택)과 Queue(큐)는 자료구조 에서 매우 기초적이면서도 중요한 개념입니다. 제가 아래에서 개념 → 특징 → 동작 원리 → 예시 → 장단점 → 활용 사례 순서로 꼼꼼하게 설명드릴게요. 1. Stack (스택) 📌 개념 **"쌓아 올린 더미"**처럼 동작하는 자료구조. LIFO (Last In, First Out) — 나중에 들어온 데이터가 먼저 나감. 마치 접시를 쌓아 올리고, 맨 위의 접시부터 꺼내는 것과 같음. 📜 특징 한쪽 끝 에서만 데이터의 삽입(Push)과 삭제(Pop)이 가능. 가장 마지막에 추가한 요소가 가장 먼저 제거됨. 중간 데이터 접근은 비효율적 (맨 위에서부터 하나씩 꺼내야 함). ⚙️ 동작 Push : 데이터를 스택의 맨 위에 넣음. Pop : 스택의 맨 위 데이터를 꺼냄. Peek / Top : 맨 위의 데이터를 확인하되 제거하지 않음. isEmpty : 스택이 비었는지 확인. [Bottom] 1 → 2 → 3 → 4 [Top] Push(5) → [Bottom] 1 → 2 → 3 → 4 → 5 [Top] Pop() → 반환: 5, 남음: [Bottom] 1 → 2 → 3 → 4 [Top] ✅ 장점 구현이 간단하고 속도가 빠름 (O(1) 연산). 되돌리기(Undo), 뒤로 가기 기능 구현이 쉬움. ❌ 단점 중간 데이터 접근이 어려움. 고정 크기 스택은 공간 낭비 가능. 💡 활용 예시 함수 호출(콜 스택) 웹 브라우저 뒤로 가기 문서 작성 프로그램의 되돌리기(Undo) 깊이 우선 탐색(DFS) 2. Queue (큐) 📌 개념 **"줄 서기"**처럼 동작하는 자료구조. FIFO (First In, First Out) — 먼저 들어온 데이터가 먼저 나감. 은행 창구나 버스 정류장 줄 서기와 같음. 📜 특징 **한쪽 끝(Rear)**에서 삽입...