노마드코더

Queues(큐)와 Stacks(스택) - 노마드 코더

숲별 2023. 2. 15. 00:55
728x90

<개발자라면 무조건 알아야하는 자료구조! 5분컷.>
그런데 오로지 우리의 상상속에만 존재
Queues(큐) 그리고 Stacks(스택)
실제로 프로그래밍 언어들에서 존재하지 않음
스택과 큐는 일종의 "규칙"
자료구조가 '큐' 혹은 '스택'으로 구분되기 위한 규칙들!
요런 녀석들을 "추상적 자료구조(Abstract Data Type)"라고 부른다
ADT는 자료구조의 한 형태
코드로 정의된 자료구조 방법이 아니라 구조의 행동양식만 정의된 것을 뜻함
규칙들만 이해하면 직접 스택과 큐라는 자료구조를 만들 수 있다는 얘기
행동양식들은 꽤나 쉬워
배열 위에 어떤 규칙을 설정한 모습
스택이 따라야하는 규칙을 설명하기 위해 팬케이크가 쌓여 있는 모습을 상상해보자
방금 만든 따끈따끈한 팬케이크를 그 위에 쌓겠지
먹을 떈 위부터 
스택은 배열이 수직으로 쌓여있는 것 
이 배열에선 요소를 추가하거나 삭제할 떄
맨 위에서부터 차례로 LiFo(Last in First out)
큐는 줄 서는 것과 같아
먼저 줄 선 사람이 먼저 나가 FiFo(First in First out)
새로운 요소는 큐 맨 뒤에 추가 큐의 맨 앞에 있는 요소만 읽거나 삭제될 수 있다.

'추상적' 자료구조라서 규칙들만 잘 이해하면 바로 적용해볼 수 있다.
진짜 중요한 질문은 언제 '큐'를 쓰고 '스택'을 쓰는가

웹브라우저에서 뒤로가기 => 스택
웹페이지 히스토리 스택의 맨 위에서 한 페이지를 가져가는 것
혹은 뭔가를 쓰다가 되돌리기(ctrl + z)

큐의 예시는 이메일 전달 혹은 푸쉬 알림 기능, 쇼핑몰에서 주문을 처리하는 방식(선착순!)
콜센터의 백엔드 전화온 순서대로 상담을 처리하는 
큐는 정말 모든 곳에 있어

자료구들은 넘나 이해하기 쉽고 정말 겁나 유용
실제로 존재하지는 않지만 규칙을 제공한다.
자료를 좀더 구조적으로 생각할 수 있지

 

 

https://www.youtube.com/watch?v=Nk_dGScimz8&list=PL7jH19IHhOLMdHvl3KBfFI70r9P0lkJwL&index=7