lifofifodouble-ended
Stack, Queue, Deque의 차이를 설명해 주세요
- 예상 시간
- 5분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
Stack overflow는 자료구조 Stack과 관련이 있나요?
BFS에서 Queue를 쓰는 이유는 무엇인가요?
Deque로 Stack을 구현할 수 있나요?
Queue를 배열로 구현할 때 주의할 점은 무엇인가요?
Deque를 쓰면 Stack과 Queue를 항상 대체할 수 있나요?
부가 설명
자료구조 이름만 보면 단순하지만, 실제로는 데이터가 나오는 순서를 강제하는 도구입니다. 브라우저 뒤로가기나 실행 취소처럼 마지막 행동을 먼저 되돌려야 하면 Stack이 맞습니다. 반대로 먼저 들어온 요청을 먼저 처리해야 하는 작업 대기열은 Queue가 더 자연스럽습니다.
Deque는 양쪽 끝을 모두 열어 둔 구조라 Stack처럼도, Queue처럼도 사용할 수 있습니다. 특히 최댓값을 유지하는 sliding window 문제처럼 앞에서 오래된 값을 버리고 뒤에서 새 값을 넣어야 하는 상황에 잘 맞습니다. 자료구조 선택은 어떤 연산을 어느 쪽 끝에서 자주 하는지에 따라 달라집니다.
한 줄 정리
Stack, Queue, Deque는 데이터를 꺼내는 순서를 다르게 제한하는 기본 도구입니다.