📙 스택(Stack) / 큐(Queue)의 정의

  • 스택과 큐는 개발할 때 접하는 정말 기본적인 자료 구조입니다.

  • 자료 구조는 컴퓨터에서 데이터를 구성하는 방법입니다.



📙 스택 / 큐는 어디서 접하게 될까?

  • 스택과 큐는 최근 개발자가 치르는 입사 시험의 1차 관문인 코딩 테스트를 준비할 경우 꼭 알아야 하는 개념입니다.

  • 선형 자료 구조 유형에서 이 두 가지 개념을 활용한 문제를 많이 풀게 됩니다. 또한 프로그래밍 언어를 공부할 경우 메모리 그림이 자주 나오는데, 스택과 큐의 개념을 잘 알고 있어야 프로그래밍 언어의 특징을 제대로 이해 가능합니다.



📙 더 알아보기

🔍 스택의 개념

  • 스택을 정의하는 문장은 제한적으로 접근할 수 있는 나열 구조라고 보통 나타냅니다. 이 정의를 한 번에 이해가능한 사람은 많이 않을 것입니다.

  • 좀 더 이해하기 쉽게 설명해보자면 이렇습니다. 추운 겨울이 되면 옷을 여러 겹 껴입습니다. 내복을 입고, 옷을 입고, 패딩까지 우리는 입게 되죠. 바로 이 과정이 스택의 push 작업입니다.

  • 그리고 외출이 끝난 후 우리는 두꺼운 패딩부터 하나씩 벗는데, pop을 하면서 편한 옷으로 갈아입을 경우 push 작업이 일어나는 것입니다.

  • 옷을 갈아입을 경우 가장 마지막에입은 두꺼운 패딩부터 벗어야 하듯 스택은 한 쪽 끝에서부터 push와 pop 작업이 일어납니다.

  • 더 자세히 알아보고 싶다면 LIFO(last in first out)와 FILO(first in last out) 개념에 대해 찾아보는 것을 추천합니다.


🔍 스택의 예시

  • 스택의 가장 대표적인 예시는 크롬 브라우저입니다.

  • 인터넷 검색을 하는 과정을 떠올려보자면 컴퓨터를 키고, 바탕화면에 있는 크롬 브라우저 아이콘을 선택합니다. 크롬 브라우저 창이 뜨면 검색하고 싶은 검색어를 입력합니다. 그리고 이 경우 중간중간 뒤로 가기 버튼을 클릭하여 작업하는 경우도 존재합니다.

  • 위 과정에서 뒤로 가기 버튼을 클릭할 경우 바로 이전 작업으로 돌아가게 되는데, 이 원리가 스택인 것입니다.


🔍 큐 개념

  • 위키백과에서는 큐를 먼저 집어넣은 데이터가 먼저 나오는 FIFO 구조로 저장하는 형식이라고 정의했습니다. 이는 앞서 설명한 스택과는 반대의 개념입니다.

🔍 큐의 예시

  • 하루 계획을 세우는 경우 보통 어떤 일들을 할 지 시간순으로 생각합니다.

  • 이 일들을 순차적으로 큐라는 자료 구조에 넣어서 push하고, 하나씩 활동할 경우에는 pop하여 수행하는 원리입니다.

  • 큐의 원리는 은행 창구를 생각하면 쉽습니다. 은행에 가면 번호표를 뽑고 차례가 될 때까지 대기합니다. 사람들이 하나씩 번호표를 뽑아갈 경우 번호표가 큐에 push되고, 창구에서 번호가 호출되면 번호표가 큐에서 pop되어 은행업무를 볼 수 있게 됩니다.

profile
나 혼자 보려고 만든 개발 일기

0개의 댓글