인프런 커뮤니티 질문&답변

백엔드마술사님의 프로필 이미지
백엔드마술사

작성한 질문수

김영한의 실전 자바 - 중급 2편

Deque와 Stack, Queue

Deque에서 Queue인지 Stack인지는 데이터를 추가 할 때 결정되는건가요?

작성

·

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

안녕하세요. 백엔드마술사님, 공식 서포터즈 OMG입니다.

Deque라는 자료구조 자체가 Queue, Stack 과 같이 동작하는 특징을 가진 자료구조입니다.

따라서 덱이라는 자료구조 타입의 변수를 선언하는 시점에서부터 자료구조는 결정되었습니다.

 

큐와 스택처럼 동작을 결정하는 것은 덱의 어떤 메서드(동작)을 호출할지에 따라 결정됩니다 😀

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

백엔드마술사님의 질문은 DequeQueue인지 Stack인지 어떻게 결정되는지에 대한 것으로 이해됩니다. Deque 인터페이스는 양방향 큐를 제공하여, 요소를 양쪽 끝에서 추가하거나 제거할 수 있는 기능을 제공합니다. 이는 DequeQueue의 성격(선입선출, FIFO)과 Stack의 성격(후입선출, LIFO) 모두를 가지고 있음을 의미합니다.

데이터를 추가하는 방식(push/offer 등)에 따라 DequeQueue로 동작할지, Stack으로 동작할지 결정됩니다. push 메서드를 사용하면 Stack처럼 동작하여 가장 마지막에 추가한 요소가 가장 먼저 제거됩니다(pop). 반면, offer 메서드를 사용하면 Queue처럼 동작하여 가장 먼저 추가한 요소가 가장 먼저 제거됩니다(poll).

사용하신 예제 코드에서 poll 메서드로 요소를 제거하는 경우, 큐의 선입선출 원칙에 따라 추가된 순서대로 요소가 제거되어야 합니다. 다만, push로 추가하고 poll로 제거하는 경우도, Deque의 양쪽 끝에서 작업이 가능하기 때문에 기대한 결과를 얻을 수 있습니다. 중요한 것은 실제로 어떤 메서드를 사용하여 요소를 추가하고 제거하는지이며, 이에 따라 Deque의 동작이 Queue 혹은 Stack로 결정됩니다.

비슷한 궁금증을 해결할 수 있는 기존 질문의 답변 링크를 나누고자 합니다.

이 질문에서는 DequeStackQueue의 행동을 어떻게 수행할 수 있는지와 주입 함수(push, offer 등)에 따라 결과값이 달라질 수 있음을 다루고 있습니다. Deque의 사용 방법에 따라 큐 또는 스택으로의 동작을 결정하는 것이 가능하다는 것을 명확하게 설명하고 있으니 참조하시면 많은 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

백엔드마술사님의 프로필 이미지
백엔드마술사

작성한 질문수

질문하기