Open 2d3k opened 1 year ago
public class Queue {
private Stack firstBox = new Stack();
private Stack secondBox = new Stack();
public void enQueue(Object item) {
firstBox.add(item);
}
public Object deQueue() {
if (secondBox.isEmpty()) {
while(!firstBox.isEmpty()) {
secondBox.push(firstBox.pop());
}
}
return secondBox.pop();
}
public static void main(String[] args) {
Queue queue = new Queue();
queue.enQueue("A");
queue.enQueue("B");
queue.enQueue("C");
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
}
}
출력결과
A,B,C
import java.util.Stack;
public class Queue<T> {
Stack<T> stack1 = new Stack<>();
Stack<T> stack2 = new Stack<>();
private void moveIfAbsent() {
if (stack2.size() == 0)
while (stack1.size() != 0)
stack2.add(stack1.pop());
}
public void add(T t) {
stack1.add(t);
}
public T peek() {
moveIfAbsent();
return stack2.peek();
}
public T poll() {
moveIfAbsent();
return stack2.pop();
}
public int size() {
return stack1.size() + stack2.size();
}
}
1. Stack과 Queue에 대해 설명하시오
2. Stack 2개로 Queue를 구현하는 방법을 설명해주시오.