작성
·
171
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
예제를 따라하면서 호기심에
deque.push(1);
deque.push(2);
deque.push(3);
System.out.println("deque.pop() = " + deque.poll());
System.out.println("deque.pop() = " + deque.poll());
System.out.println("deque.pop() = " + deque.poll());
pop을 -> poll로 바꿔봤는데 결과값이 똑같이 나오고
그 반대로 offer / pop 으로 해도 마찬가지더라구요!
Deque<Integer> deque = new ArrayDeque<>();
혹시 이 Deque가 queue / stack 둘 다 지원하기 때문에
데이터를 추가 할 때 자료구조가 결정되는게 맞는건가요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
백엔드마술사님의 질문은 Deque
가 Queue
인지 Stack
인지 어떻게 결정되는지에 대한 것으로 이해됩니다. Deque
인터페이스는 양방향 큐를 제공하여, 요소를 양쪽 끝에서 추가하거나 제거할 수 있는 기능을 제공합니다. 이는 Deque
가 Queue
의 성격(선입선출, FIFO)과 Stack
의 성격(후입선출, LIFO) 모두를 가지고 있음을 의미합니다.
데이터를 추가하는 방식(push
/offer
등)에 따라 Deque
가 Queue
로 동작할지, Stack
으로 동작할지 결정됩니다. push
메서드를 사용하면 Stack
처럼 동작하여 가장 마지막에 추가한 요소가 가장 먼저 제거됩니다(pop
). 반면, offer
메서드를 사용하면 Queue
처럼 동작하여 가장 먼저 추가한 요소가 가장 먼저 제거됩니다(poll
).
사용하신 예제 코드에서 poll
메서드로 요소를 제거하는 경우, 큐의 선입선출 원칙에 따라 추가된 순서대로 요소가 제거되어야 합니다. 다만, push
로 추가하고 poll
로 제거하는 경우도, Deque
의 양쪽 끝에서 작업이 가능하기 때문에 기대한 결과를 얻을 수 있습니다. 중요한 것은 실제로 어떤 메서드를 사용하여 요소를 추가하고 제거하는지이며, 이에 따라 Deque
의 동작이 Queue
혹은 Stack
로 결정됩니다.
비슷한 궁금증을 해결할 수 있는 기존 질문의 답변 링크를 나누고자 합니다.
참고할 수 있는 유사 질문 링크
이 질문에서는 Deque
가 Stack
과 Queue
의 행동을 어떻게 수행할 수 있는지와 주입 함수(push
, offer
등)에 따라 결과값이 달라질 수 있음을 다루고 있습니다. Deque
의 사용 방법에 따라 큐 또는 스택으로의 동작을 결정하는 것이 가능하다는 것을 명확하게 설명하고 있으니 참조하시면 많은 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.