자료구조 Queue 안에 입력받은 값이 담겨있습니다.
입력 받은 값의 k번째 요소까지 값의 방향을 전환(reverse)시켜 결과를 표시해야 합니다.
k번째 요소까지 스택에 옮겨 담습니다.
스택에 담긴 값을 큐에 다시 옮겨 담습니다.
Queue 첫 번째 요소 값(2)을 스택으로 이동시키면, Stack의 첫 번째 요소에는 값 2가 입력됩니다.
Queue 두 번째 요소 값(4)을 스택으로 이동시키면, Stack의 두 번째 요소에는 값 4가 입력됩니다.
Queue 두 번째 요소 값(6)을 스택으로 이동시키면, Stack의 두 번째 요소에는 값 6가 입력됩니다.
Stack 세 번째 요소 값(6)을 Queue로 이동시키면, Queue의 첫 번째 요소에는 값 6가 입력됩니다.
Stack 두 번째 요소 값(4)을 Queue로 이동시키면, Queue의 두 번째 요소에는 값 4가 입력됩니다.
Stack 첫 번째 요소 값(2)을 Queue로 이동시키면, Queue의 세 번째 요소에는 값 2가 입력됩니다.
public static void main(String[] args){
Queue<Integer> queue = new Queue<>(4);
queue.add(2);
queue.add(4);
queue.add(6);
queue.add(8);
queue.add(10);
reverseK(queue, 3);
System.out.print(" >>> Result : ");
while (!queue.isEmpty()){
System.out.print(queue.dequeue() + " ");
}
private static <T> void reverseK(Queue<T> queue, int k) {
if (queue.isEmpty() || k <= 0) {
return;
}
Stack<T> stack = new Stack<>(k);
while (!stack.isFull()) {
stack.push(queue.dequeue());
}
while (!stack.isEmpty()) {
queue.enqueue(stack.pop());
}
int size = queue.getCurrentSize();
for (int i = 0; i < size - k; i++) {
queue.enqueue(queue.dequeue());
}
}
[Queue] 스택을 이용한 큐 구현 (0) | 2020.04.05 |
---|---|
[Queue] 기본 구현 enqueue, dequeue (0) | 2020.04.04 |
[Stack] 두 개의 스택 (0) | 2020.04.03 |
[Stack] 배열 구현 (0) | 2020.03.30 |
[Linked list] 리스트 결합과 데이터 중복 삭제 (0) | 2020.03.29 |
댓글 영역