본문 바로가기
Java/알고리즘

스택 / 큐

by JuNo_12 2025. 7. 2.

스택(Stack)

개념

  • LIFO (Last In, First Out) - 마지막에 들어간 것이 먼저 나옴
  • 책 쌓기와 같은 구조 - 위에서 넣고, 위에서 빼기

주요 연산

  • push(): 맨 위에 요소 추가
  • pop(): 맨 위 요소 제거하고 반환
  • peek() / top(): 맨 위 요소 확인 (제거하지 않음)
  • isEmpty(): 스택이 비어있는지 확인

사용 예시

  • 되돌리기(Undo) 기능
  • 괄호 검사 (올바른 괄호 쌍 확인)
  • 함수 호출 관리
  • 계산기 (후위 표기법)

자바 코드

Stack<Integer> stack = new Stack<>();
stack.push(1);        // [1]
stack.push(2);        // [1, 2]
int top = stack.pop(); // 2 반환, [1]
int peek = stack.peek(); // 1 확인, [1]

큐(Queue) 

개념

  • FIFO (First In, First Out) - 먼저 들어간 것이 먼저 나옴
  • 줄 서기와 같은 구조 - 뒤에서 넣고, 앞에서 빼기

주요 연산

  • offer() / enqueue(): 뒤쪽에 요소 추가
  • poll() / dequeue(): 앞쪽 요소 제거하고 반환
  • peek() / front(): 맨 앞 요소 확인 (제거하지 않음)
  • isEmpty(): 큐가 비어있는지 확인

사용 예시

  • 프로세스 스케줄링
  • BFS(너비 우선 탐색)
  • 프린터 대기열
  • 버퍼 관리

자바 코드

Queue<Integer> queue = new LinkedList<>();
queue.offer(1);       // [1]
queue.offer(2);       // [1, 2]
int front = queue.poll(); // 1 반환, [2]
int peek = queue.peek();  // 2 확인, [2]

스택 vs 큐 비교

구분 스택(Stack) 큐(Queue)
구조 LIFO FIFO
삽입 위치 맨 위(top) 맨 뒤(rear)
삭제 위치 맨 위(top) 맨 앞(front)
대표 예시 책 쌓기 줄 서기
주요 용도 되돌리기, 괄호검사 스케줄링, BFS

자료구조의 관계

스택과 큐는 리스트의 특별한 사용법

  • 리스트: 인덱스로 자유롭게 접근 가능
  • 스택: 리스트를 "맨 위에서만" 사용
  • : 리스트를 "한쪽 끝에서만" 사용

핵심 포인트

  • 스택과 큐는 제약이 있는 리스트
  • 접근 패턴에 따라 선택 (최근 것 vs 오래된 것)
  • 문제 상황을 보고 LIFO인지 FIFO인지 판단하기

 


 

'Java > 알고리즘' 카테고리의 다른 글

스텍 / 큐 : 프로세스  (1) 2025.07.03
스텍 / 큐 : 다리를 지나는 트럭  (1) 2025.07.03
스텍 / 큐 : 주식가격  (0) 2025.07.03
해시  (0) 2025.06.23
배열  (0) 2025.04.30