스택 (Stack)

스택은 후입선출(LIFO, Last In First Out) 방식으로 데이터를 저장하는 자료구조.
즉, 가장 최근에 추가된 데이터가 가장 먼저 제거.

주요 연산
푸시(Push): 스택에 데이터를 추가.
팝(Pop): 스택에서 가장 최근에 추가된 데이터를 제거하고 반환.
피크(Peek): 스택의 가장 위에 있는 데이터를 반환. 데이터는 제거하지 않음.
비어있는지 확인(Empty): 스택이 비어 있는지를 확인.

장점
빠른 인덱스 접근: 스택의 가장 위에 있는 데이터에 즉시 접근할 수 있음.
단순한 구현: 스택은 구현이 간단하고, 재귀 호출 시 함수의 상태를 관리하는 데 유용.

단점
제한된 접근: 스택의 중간이나 아래에 있는 요소에 직접 접근할 수 없음.
메모리 낭비: 스택이 너무 커지면 메모리 사용이 비효율적이 될 수 있음.


큐 (Queue)

큐는 선입선출(FIFO, First In First Out) 방식으로 데이터를 저장하는 자료구조.
즉, 가장 먼저 추가된 데이터가 가장 먼저 제거.

주요 연산
인큐(Enqueue): 큐에 데이터를 추가.
디큐(Dequeue): 큐에서 가장 먼저 추가된 데이터를 제거하고 반환.
프론트(Front): 큐의 가장 앞에 있는 데이터를 반환. 데이터는 제거하지 않음.
비어있는지 확인(Empty): 큐가 비어 있는지를 확인.

장점
순서 유지: 데이터를 추가한 순서대로 처리할 수 있어, 작업의 순서를 보장.
효율적인 처리: 서버 요청 및 프로세스 관리를 위한 다양한 작업에 적합.

단점
느린 접근: 큐의 중간이나 뒤에 있는 요소에 즉시 접근할 수 없음.
메모리 사용: 큐의 크기가 커지면 메모리 사용이 비효율적이 될 수 있음.

요약

특성 스택 (Stack) 큐 (Queue)
데이터 처리 방식 후입선출 (LIFO) 선입선출 (FIFO)
주요 연산 푸시, 팝, 피크 인큐, 디큐, 프론트
접근 시간 O(1) (가장 위의 요소) O(1) (가장 앞의 요소)
사용 예 함수 호출 관리, 웹 브라우저의 뒤로 가기 기능 프린터 작업 관리, 프로세스 관리