스택과 큐는 개발할 때 접하는 정말 기본적인 자료 구조입니다.
자료 구조는 컴퓨터에서 데이터를 구성하는 방법입니다.
스택과 큐는 최근 개발자가 치르는 입사 시험의 1차 관문인 코딩 테스트를 준비할 경우 꼭 알아야 하는 개념입니다.
선형 자료 구조 유형에서 이 두 가지 개념을 활용한 문제를 많이 풀게 됩니다. 또한 프로그래밍 언어를 공부할 경우 메모리 그림이 자주 나오는데, 스택과 큐의 개념을 잘 알고 있어야 프로그래밍 언어의 특징을 제대로 이해 가능합니다.
스택을 정의하는 문장은 제한적으로 접근할 수 있는 나열 구조라고 보통 나타냅니다. 이 정의를 한 번에 이해가능한 사람은 많이 않을 것입니다.
좀 더 이해하기 쉽게 설명해보자면 이렇습니다. 추운 겨울이 되면 옷을 여러 겹 껴입습니다. 내복을 입고, 옷을 입고, 패딩까지 우리는 입게 되죠. 바로 이 과정이 스택의 push 작업입니다.
그리고 외출이 끝난 후 우리는 두꺼운 패딩부터 하나씩 벗는데, pop을 하면서 편한 옷으로 갈아입을 경우 push 작업이 일어나는 것입니다.
옷을 갈아입을 경우 가장 마지막에입은 두꺼운 패딩부터 벗어야 하듯 스택은 한 쪽 끝에서부터 push와 pop 작업이 일어납니다.
더 자세히 알아보고 싶다면 LIFO(last in first out)와 FILO(first in last out) 개념에 대해 찾아보는 것을 추천합니다.
스택의 가장 대표적인 예시는 크롬 브라우저입니다.
인터넷 검색을 하는 과정을 떠올려보자면 컴퓨터를 키고, 바탕화면에 있는 크롬 브라우저 아이콘을 선택합니다. 크롬 브라우저 창이 뜨면 검색하고 싶은 검색어를 입력합니다. 그리고 이 경우 중간중간 뒤로 가기 버튼을 클릭하여 작업하는 경우도 존재합니다.
위 과정에서 뒤로 가기 버튼을 클릭할 경우 바로 이전 작업으로 돌아가게 되는데, 이 원리가 스택인 것입니다.
하루 계획을 세우는 경우 보통 어떤 일들을 할 지 시간순으로 생각합니다.
이 일들을 순차적으로 큐라는 자료 구조에 넣어서 push하고, 하나씩 활동할 경우에는 pop하여 수행하는 원리입니다.
큐의 원리는 은행 창구를 생각하면 쉽습니다. 은행에 가면 번호표를 뽑고 차례가 될 때까지 대기합니다. 사람들이 하나씩 번호표를 뽑아갈 경우 번호표가 큐에 push되고, 창구에서 번호가 호출되면 번호표가 큐에서 pop되어 은행업무를 볼 수 있게 됩니다.