
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
값 입력받기
Deque deque = new ArrayDeque();
for (int i = 0; i < N; i++) {
deque.addLast(i + 1);
}
덱 만들기
int size = deque.size();
bw.write(deque.pollFirst() + " ");
for (int i = 1; i < size; i++) {
if (i % 2 == 0) {
bw.write(deque.pollFirst() + " ");
} else {
deque.addLast(deque.pollFirst());
size++;
}
}
첫번째 값 담기 & 마지막거 빼서 앞에 두기 반복
bw.flush();
bw.close();
}
}
출력
Deque
- Stack은 Vector를 상속받아 구현되어 있다.
- Vector는 단일 쓰레드 환경에서의 성능 저하로 사용이 권장되지 않는다.
- 따라서 Vector를 상속한 Stack 또한 사용하지 않는 것이 좋다.
- ArrayDeque는 Deque의 구현체이며 Stack과 Queue의 메서드를 모두 지원한다.
- Stack 대신 ArrayDeque를 사용하면 성능 향상을 기대할 수 있다.
- 쓰레드 안전한 ArrayDeque를 사용하기를 원한다면 외부 동기화를 사용하자.
Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(1);
Queue<Integer> queue = new ArrayDeque<>();
queue.offer(1);
Deque<Integer> stack = new ArrayDeque<>();
stack.push(1);
참고블로그
Stack 대신 ArrayDeque 좋은 정보네요