꾸준히 기록하자
[Algorithms] 스택과 큐 본문
728x90
스택의 특징
- LIFO(Last In, First Out): 마지막에 들어온 데이터가 가장 먼저 나가는 구조입니다.
- 깊이 우선 탐색(DFS), 백 트래킹에서 중요한 역할을 합니다.
연산
- push(): 스택의 맨 위에 데이터를 추가합니다.
- pop(): 스택의 맨 위에 있는 데이터를 제거하고 반환합니다.
- peek(): 스택의 맨 위에 있는 데이터를 제거하지 않고 반환합니다.
package StackAndQueue;
import java.util.Stack;
public class stack {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(2);
stack.push(4);
System.out.println("contains : " + stack.contains(2)); // 2라는 숫자 존재여부 판단 있으면 true
System.out.println(stack);
System.out.println("peek : " + stack.peek()); // 스택의 가장 상단의 값 출력하고 제거하지 않음
System.out.println(stack);
System.out.println("pop : " + stack.pop()); // 스택의 가장 상단의 값 출력하고 제거함
System.out.println(stack);
stack.clear(); // 초기화
System.out.println(stack);
System.out.println(stack.isEmpty()); // 비어있는지 판단 비어있으면 true
}
}
큐의 특징
- FIFO(First In, First Out): 큐는 먼저 들어온 데이터가 먼저 나가는 구조입니다.
- 한쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행
- 반대 끝은 리어(rear)로 정하여 삽입 연산만 수행
- 그래프의 넓이 우선 탐색(BFS)에서 사용
연산:
- offer(): 큐의 끝에 데이터를 추가합니다.
- poll(): 큐의 앞에 있는 데이터를 제거하고 반환합니다.
- peek(): 큐의 앞에 있는 데이터를 제거하지 않고 반환합니다.
package StackAndQueue;
import java.util.*;
public class queue {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.offer(4);
System.out.println(queue.poll()); // 1 > 제거
System.out.println(queue.poll()); // 2 > 제거
System.out.println(queue.peek()); // 3 > 제거 안함
System.out.println(queue); // [3,4]
}
}
차이점 요약
- 스택은 데이터를 넣고 빼는 순서가 "후입선출" 방식으로 마지막에 넣은 데이터를 가장 먼저 꺼냅니다.
- 큐는 데이터를 넣고 빼는 순서가 "선입선출" 방식으로 가장 먼저 넣은 데이터를 가장 먼저 꺼냅니다.
끝.
반응형
'IT > Algorithms' 카테고리의 다른 글
[Algorithms] 삽입 정렬 (0) | 2024.10.07 |
---|---|
[Algorithms] 선택 정렬 (0) | 2024.09.30 |
[Algorithms] 버블 정렬 (0) | 2024.08.31 |
[Algorithms] 배열과 리스트 (0) | 2024.08.26 |
Comments