안녕하세요!
알고리즘과 자료구조를 공부하면서 스택과 큐에 대해 자세히 배워볼 수 있는 시간이 있었습니다.
이번 시간에는 제가 공부하면서 중요하다고 생각한 개념과 지식을 기록해보려합니다.
자료구조 중에 대표적인 스택(Stack)과 큐(Queue)에 대해 같이 알아보시죠!
스택 (Stack)
스택은 한쪽끝으로만 자료를 넣고 빼는 선형자료구조입니다.
가령 예를 들면 "빨래통"을 예시로 들 수 있습니다.
월요일에 넣은 세탁물과 금요일에 넣은 세탁물이 담긴 빨래통에서 세탁물을 꺼냈을 때 집어지는 것은 금요일에 넣은 빨래물입니다!
당연한 이야기죠! 다시말해
first in last out 먼저들어간 친구가 나중에 나온다!
last in first out 마지막에 들어간 친구가 먼저 나온다!
이 구조가 스택의 개념이라고 생각하시면 됩니다.
그렇다면 스택의 자료구조가 왜 필요할까요??
바로, 넣은 순서를 쌓아두고 있기 때문입니다.
그 순서가 필요한 경우는 다양하게 있겠지만 저는 ctrl + z 의 경우를 말씀드릴 수 있을 것 같습니다.
변화를 stack의 개념으로 담아두고 ctrl + z 를 통해 하나씩 가장 최근에 담긴 정보를 꺼내오는 것이죠.
last in first out입니다!
큐 (Queue)
이번에는 큐에 대해서 알아보겠습니다
큐는 선입선출의 자료구조입니다.
큐를 비유하자면 식당에 줄서는 것을 생각하시면 됩니다.
먼저 줄을 선 사람이 먼저 식당에 들어가 듯 먼저 들어간 요소가 먼저 나오는 구조입니다.
데이터를 한쪽으로 집어넣고 다른쪽으로는 내보내는 형식인거죠
first in first out 먼저 들어간 친구가 먼저 나온다!
last in last out 마지막에 들어간 친구가 마지막에 나온다!
이 구조가 큐의 자료구조라고 생각하시면 됩니다.
그렇다면 큐의 자료구조는 왜 필요할까요?
큐의 자료구조는 먼저해야하는 일을 리스트화 하거나 저장하는데 유용합니다.
선입선출의 개념으로 다양한 로직에서 활용할 수 있습니다.
마지막으로 조금 어려울 수 있으나 꼭 해봐야하는 구현을 해보겠습니다.
면접에 가서도 "스택을 구현해보세요" 혹은 "큐를 구현해보세요" 라는 질문을 받을 때가 있습니다.
이런 경우를 대비하는 용도도 있지만, 이 구현을 직접해보면 스택과 큐에 대한 개념을 확실하게 잡을 수 있을 겁니다.
js로 구현한 스택
Stack을 생성 -> push ,pop매서드 실행
각 단계별로 어떻게 저장되는지 콘솔로 확인해봤습니다.
js로 구현한 Queue
Stack을 생성 -> push ,pop매서드 실행
각 단계별로 어떻게 저장되는지 콘솔로 확인해봤습니다.
각 단계별로 어떻게 스택과 큐의 자료구조가 변경되는지 확인할 수 있었습니다.
자주는 아니더라도 일주일에 한번씩 코드를 쳐보면서 개념을 차곡차곡 쌓아가야겠습니다!
긴 글 읽어주셔서 감사합니다-!
'CS' 카테고리의 다른 글
[CS] 버블 정렬 (0) | 2024.01.17 |
---|---|
[CS] 이진탐색 (0) | 2024.01.13 |
[자료구조] DFS와 BFS (0) | 2024.01.11 |
[자료구조] 연결리스트 (LinkedList) (1) | 2024.01.09 |
[자료구조] 힙(Heap)이 뭘까? (4) | 2024.01.06 |