안녕하세요! 저도 평소에 생각하지 못했던 부분인데 흥미로운 마음에 답변 드립니다. 말씀하신대로 Deque 의 경우 양쪽 삽입, 삭제가 가능하기 때문에 Stack 이나 Queue 대신 사용이 가능합
안녕하세요! 저도 평소에 생각하지 못했던 부분인데 흥미로운 마음에 답변 드립니다. 말씀하신대로 Deque 의 경우 양쪽 삽입, 삭제가 가능하기 때문에 Stack 이나 Queue 대신 사용이 가능합니다. 기능상 FIFO(선입선출), 혹은 LIFO(후입선출) 만 사용하면 되거나 혹은 그렇게 데이터가 처리되도록 강제해야하는 상황이라면 Deque 대신 Stack 이나 Queue 를 쓰는게 좀 더 명확하게 느껴질것 같습니다만 Deque 를 관리하는 모듈에서 API Interface 를 요구사항에 맞춰 명확하게만 정의하면 이부분도 이슈가 아닐수도 있을거 같네요. 모든 언어가 동일하진 않겠습니다만, Java 를 기준으로 말씀드리자면, Java 에서는 Stack 을 레거시 class 로 정의하고 있고 Stack 보다는 Deque 를 쓰는것을 권장하고 있습니다. - JDK20 Stack 공식 문서: https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/Stack.html) - JDK20 Deque 공식 문서: https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/Deque.html 그 이유로는 Stack 구현상 성능 저하가 발생할 수 있고, 초기 용량 설정이 없어 데이터가 많아지면 메모리 이슈가 발생할 수 있습니다. Stack 과 달리 Queue 의 경우 Deque 가 Queue 를 상속받는 구조여서 성능적인 부분에서 크게 차이는 없어보이고 interface 의 차이 정도만 있다고 생각되네요. 저의 짧은 지식이 부디 도움이 되시길 바랍니다.