멘토링
Queue에 담긴 배열을 뒤집어 보자
langsamUndStetig
2022. 7. 16. 00:03
이를 위해서 몇 개 아이디어를 짜봤다.
큐에 들어있는 요소들을 스택에 넣은 후, 다시 큐에 넣는 방법과
배열을 만들어서 큐의 요소들을 순서대로 담은 후 역순으로 큐에 넣는 방법을 생각한 후 구현했다.
import java.util.Queue;
import java.util.*;
public class Play {
private static Queue<Integer> queue;
// queue의 값을 순서대로 출력하는 메소드
public static void show() {
Iterator<Integer> iterator = queue.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
// stack을 활용한 배열 순서 뒤집기
public static void reverse() {
Stack<Integer> stack = new Stack<>();
Iterator<Integer> iterator2 = queue.iterator();
while(iterator2.hasNext()) {
stack.add(queue.poll());
}
queue.clear();
Iterator<Integer> iterator3 = stack.iterator();
while(iterator3.hasNext()) {
queue.add(stack.pop());
}
}
//stack을 활용한 배열 뒤집기 2
public static void reverse2(){
Stack<Integer> stack = new Stack<>();
for(int nums : queue) {
stack.push(queue.poll());
}
while(true) {
queue.add(stack.pop());
if(stack.isEmpty()) break;
}
}
// stack을 활용한 배열 뒤집기 3
public static void reverse3() {
Stack<Integer> stack = new Stack<>();
stack.addAll(queue);
queue.clear();
for(int i=0, j=stack.size();i<j;i++) {
queue.add(stack.pop());
}
}
// 정수 타입 배열을 활용한 배열 뒤집기
public static void reverse4() {
int[] abc = new int[queue.size()];
for(int j= queue.size()-1; j>=0;j--) {
abc[j]= queue.poll();
}
for(int i : abc) {
queue.add(i);
}
}
public static void main(String[] args) {
// Queue 인터페이스를 구현한 ArrayDeque 객체에 요소 추가
queue = new ArrayDeque<>();
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
// Queue 출력
show();
System.out.println();
reverse();
// Queue 출력
show();
}
}
출력값
1 2 3 4
4 3 2 1