🔦스택
스택은 삽입과 삭제 연산이 후입선출(LIFO)로 이뤄지는 자료구조.
스택은 DFS(Deep First Search), 백트레킹 종류의 코테에 효과적
Stack
클래스의 주요 메소드import java.util.Stack;
Stack<Integer> stack = new Stack<>();
메소드 | 설명 |
---|---|
push(E item) | 스택의 맨 위에 요소를 추가합니다. |
pop() | 스택의 맨 위에 있는 요소를 제거하고 반환합니다. 스택이 비어 있으면 예외 발생. |
peek() | 스택의 맨 위에 있는 요소를 제거하지 않고 반환합니다. |
isEmpty() | 스택이 비어 있는지 확인하고, 비어 있으면 true 를 반환합니다. |
search(Object o) | 스택에서 특정 요소의 위치를 반환합니다. (1부터 시작, 요소가 없으면 -1 반환) |
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 element: " + stack.peek()); // Output: 30
// pop: 최상단 요소 제거 및 반환
System.out.println("Removed element: " + stack.pop()); // Output: 30
// isEmpty: 스택이 비었는지 확인
System.out.println("Is stack empty? " + stack.isEmpty()); // Output: false
// search: 특정 요소의 위치 찾기
System.out.println("Position of 10: " + stack.search(10)); // Output: 2
}
}
큐(Queue)는 선입선출(FIFO, First In First Out) 방식으로 작동하는 자료구조 은행 줄 서기나 대기열과 유사하게, 먼저 들어온 데이터가 먼저 처리됩니다.
큐는 BFS(Breadth Firsth Search)에서 자주 사용됨
Queue
인터페이스의 주요 메소드import java.util.Queue;
import java.util.LinkedList;
Queue<Integer> queue = new LinkedList<>();
메소드 | 설명 |
---|---|
add(E e) | 큐의 맨 뒤에 요소를 추가합니다. (큐가 꽉 차면 예외 발생) |
offer(E e) | 큐의 맨 뒤에 요소를 추가합니다. (큐가 꽉 찬 경우 예외 대신 false 반환) |
remove() | 큐의 맨 앞에 있는 요소를 제거하고 반환합니다. (비어 있으면 예외 발생) |
poll() | 큐의 맨 앞에 있는 요소를 제거하고 반환합니다. (비어 있으면 null 반환) |
element() | 큐의 맨 앞에 있는 요소를 확인합니다. (비어 있으면 예외 발생) |
peek() | 큐의 맨 앞에 있는 요소를 확인합니다. (비어 있으면 null 반환) |
import java.util.Queue;
import java.util.LinkedList;
public class QueueExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// add/offer: 요소 추가
queue.add(1);
queue.offer(2);
queue.offer(3);
// peek: 맨 앞 요소 확인
System.out.println("Front element: " + queue.peek()); // Output: 1
// poll: 맨 앞 요소 제거 및 반환
System.out.println("Removed element: " + queue.poll()); // Output: 1
// isEmpty: 큐가 비어 있는지 확인
System.out.println("Is queue empty? " + queue.isEmpty()); // Output: false
}
}