728x90
반응형
SMALL
스택(Stack)과 큐(Queue)의 차이를 쉽게 이해해보자!
1. 스택(Stack)
스택은 접시를 쌓는 것과 같아요.
- 새 접시는 위에 올리고, 꺼낼 때도 위에서부터 꺼내요.
- 이 방식을 LIFO (Last In, First Out)라고 불러요.
- 마지막에 넣은 게 가장 먼저 나간다는 뜻이에요.
스택의 특징
- 넣기(push): 새로운 데이터를 위에 쌓아요.
- 빼기(pop): 맨 위에 있는 데이터를 꺼내요.
- 가장 위 확인(peek): 맨 위에 있는 게 뭔지 확인만 해요(꺼내지는 않아요).
2. 큐(Queue)
큐는 줄 서는 것과 같아요.
- 먼저 온 사람이 먼저 나가요.
- 이 방식을 FIFO (First In, First Out)라고 불러요.
- 먼저 들어간 게 먼저 나온다는 뜻이에요.
큐의 특징
- 넣기(enqueue): 줄 끝에 새로운 데이터를 추가해요.
- 빼기(dequeue): 줄 맨 앞에 있는 데이터를 꺼내요.
쉽게 비유해보기
- 스택(Stack)
- 예: 접시를 쌓을 때 맨 위에서만 추가하거나 꺼낼 수 있음.
- "접시 하나 더 올려!" → Push
- "맨 위 접시 꺼내!" → Pop
- 큐(Queue)
- 예: 영화표 줄에서 먼저 선 사람이 먼저 들어감.
- "새로운 사람 줄에 추가!" → Enqueue
- "맨 앞 사람 입장!" → Dequeue
3. 스택(Stack)과 큐(Queue)의 Java와 Python 예제
스택(Stack) 예제
Java 코드
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// Push: 스택에 값 추가
stack.push(10);
stack.push(20);
stack.push(30);
// Peek: 스택의 맨 위 값 확인
System.out.println("Top of Stack: " + stack.peek());
// Pop: 스택의 맨 위 값 꺼내기
System.out.println("Popped: " + stack.pop());
System.out.println("Popped: " + stack.pop());
// 남은 값 출력
System.out.println("Stack: " + stack);
}
}
Python 코드
# 스택은 리스트로 구현
stack = []
# Push: 스택에 값 추가
stack.append(10)
stack.append(20)
stack.append(30)
# Peek: 스택의 맨 위 값 확인
print("Top of Stack:", stack[-1])
# Pop: 스택의 맨 위 값 꺼내기
print("Popped:", stack.pop())
print("Popped:", stack.pop())
# 남은 값 출력
print("Stack:", stack)
큐(Queue) 예제
Java 코드
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// Enqueue: 큐에 값 추가
queue.add(10);
queue.add(20);
queue.add(30);
// Peek: 큐의 맨 앞 값 확인
System.out.println("Front of Queue: " + queue.peek());
// Dequeue: 큐의 맨 앞 값 꺼내기
System.out.println("Dequeued: " + queue.poll());
System.out.println("Dequeued: " + queue.poll());
// 남은 값 출력
System.out.println("Queue: " + queue);
}
}
Python 코드
from collections import deque
# 큐 생성
queue = deque()
# Enqueue: 큐에 값 추가
queue.append(10)
queue.append(20)
queue.append(30)
# Peek: 큐의 맨 앞 값 확인
print("Front of Queue:", queue[0])
# Dequeue: 큐의 맨 앞 값 꺼내기
print("Dequeued:", queue.popleft())
print("Dequeued:", queue.popleft())
# 남은 값 출력
print("Queue:", list(queue))
실행 결과
스택(Stack)
Top of Stack: 30
Popped: 30
Popped: 20
Stack: [10]
큐(Queue)
Front of Queue: 10
Dequeued: 10
Dequeued: 20
Queue: [30]
이 코드를 보면서 스택은 맨 위에 넣고 빼는 구조이고, 큐는 줄을 서고 맨 앞부터 나가는 구조라는 점을 확인할 수 있어요! 😊
728x90
반응형
SMALL
'자료구조 및 알고리즘 > 기본 자료구조' 카테고리의 다른 글
배열 vs 연결 리스트, 어떤 구조가 내 코드에 맞을까? - 코드카인 티스토리 (0) | 2025.01.02 |
---|---|
[자료구조] Hash Table로 데이터 관리 고수가 되는 법! - 코드카인 티스토리 (0) | 2024.12.23 |