Java 기초 정리 - 자료구조 (Stack, Queue, Heap, Deque)

Zyoon·2025년 4월 15일

Java 기초정리

목록 보기
17/24

💡자료구조 개념 정리


Stack


📘 후입선출 (LIFO : Last In First Out)

  • 주요 메서드
    push() : 값 추가
    pop()  : 값 제거 (맨 위)
    peek() : 맨 위 값 확인
  • 사용 예시
    Stack<Integer> stack = new Stack<>();
    stack.push(10);
    stack.push(20);
    stack.pop();   // 20
    stack.peek();  // 10
  • 주로 사용되는 문제
    • 웹 브라우저 뒤로가기
    • 재귀 호출
    • 괄호 검사 문제

Queue



📘 선입선출(FIFO : First In First Out)

  • 주요 메서드
    offer()	: 값 추가
    poll()	: 값 제거 (맨 앞)
    peek()	: 맨 앞 값 확인
  • 사용 예시
    Queue<Integer> queue = new LinkedList<>();
    queue.offer(10);
    queue.offer(20);
    queue.poll();  // 10
    queue.peek();  // 20
  • 주로 사용되는 문제
    • 줄서기
    • BFS (너비 우선 탐색)
    • 프로세스 스케줄러

Heap (PriorityQueue)


📘 최대값 또는 최소값

  • Queue 와 차이점

    • 일반 큐는 선입선출
    • PriorityQueue는 값이 들어오면 자동 정렬 (기본은 작은 값)
    • 꺼낼 때는 가장 작은 값/큰 값을 바로 꺼냄
  • 기본 메서드

    offer() : 값 넣기
    poll() : 가장 작은 값 꺼내기
    peek() : 가장 작은 값 확인만 하기 (꺼내지는 않음)
  • 사용예시
    //기본적으로 오름차순
    PriorityQueue<Integer> pq = new PriorityQueue<>();
    
    pq.offer(5);
    pq.offer(2);
    pq.offer(8);
    
    pq.poll();  // 2
    pq.poll();  // 5
    pq.poll();  // 8
    
    //내림차순
    PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
  • 주로 사용되는 문제
    • 우선순위 큐
    • 다익스트라 최단경로
    • Top K 문제

Deque (Double Ended Queue)


📘 양쪽으로 삽입/삭제 가능한 큐

  • 기본 메서드
    addFirst() : 앞에 추가
    addLast()	 : 뒤에 추가
    pollFirst(): 앞에서 제거
    pollLast() : 뒤에서 제거
  • 사용 예시
    Deque<Integer> deque = new ArrayDeque<>();
    deque.addFirst(10);
    deque.addLast(20);
    deque.pollFirst();  // 10
    deque.pollLast();   // 20
  • 주로 사용되는 문제
    • 슬라이딩 윈도우 문제
    • 앞 뒤로 데이터가 왔다갔다 하는 상황

정리


자료구조자바 클래스/인터페이스
스택Stack
Queue (LinkedList, ArrayDeque)
힙 (우선순위 큐)PriorityQueue
덱 (양방향 큐)Deque (ArrayDeque)
profile
기어 올라가는 개발

0개의 댓글