99클럽 코테 스터디 16일차 TIL - deque

수삼·2024년 11월 12일
0

코딩테스트

목록 보기
21/44

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);

참고블로그

2개의 댓글

comment-user-thumbnail
2024년 11월 13일

Stack 대신 ArrayDeque 좋은 정보네요

1개의 답글