스택 2개로 큐(FIFO)
- stack 1과 stack 2 생성
- enqueue : stack 1에 원소를 push, O(1)
- dequeue : stack 2가 비어있을 경우 stack 1의 원소를 pop한 뒤 stack 2에 push 후 stack 2의 top을 pop, O(n)
- dequeue : stack 2가 차있을 경우, stack 2의 top을 pop, O(1)
큐 2개로 스택(LIFO)
- queue 1과 queue 2 생성
- push: queue 1이 비어있으면 queue 2에 enqueue, 아니면 queue 1에 enqueue, O(1)
- pop : 두 개의 queue 중 비어있지 않은 queue의 원소를 1개만 제외하고 다 다른 queue로 이동한 뒤 마지막 남은 원소를 반환, O(n)