class QueueWithStacks {
Stack<Integer> forwardStack;
Stack<Integer> reverseStack;
public QueueWithStacks(){
forwardStack = new Stack<>();
reverseStack = new Stack<>();
}
public void offer(int data){
forwardStack.push(data);
}
public int poll(){
if(reverseStack.isEmpty()){
while(!forwardStack.isEmpty()){
reverseStack.push(forwardStack.pop());
}
}
if(reverseStack.isEmpty()){
// 예외처리
}
return reverseStack.pop();
}
}
class StackWithQueues {
Queue<Integer> mainQueue;
Queue<Integer> tempQueue;
public StackWithQueues(){
mainQueue = new LinkedList<>();
tempQueue = new LinkedList<>();
}
public void push(int data){
mainQueue.offer(data);
}
public int pop(){
int ret;
if(mainQueue.isEmpty()){
// 예외 처리
}
while(mainQueue.size() != 1){
tempQueue.offer(mainQueue.poll());
}
ret = mainQueue.poll();
while(!tempQueue.isEmpty()){
mainQueue.offer(tempQueue.poll());
}
return ret;
}
}
https://velog.io/@wonhee010/Stack-2%EA%B0%9C%EB%A1%9C-Queue-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0
https://hyunki99.tistory.com/27