본문 바로가기
제가 왜 코딩을 하고 있을까요?/other

[자료구조] 큐(queues)와 스택(Stack)이란? (3분 요약)

by asj8000 2021. 8. 27.
반응형

큐와 스택에 대해 알아보고 계신 당신께...
장담컨데 이 것들 젼나 쉽습니다
이 게시물 하나로 3분 안에 끝내드릴께요

첫 이해를 위한 겉핥기

이 둘은 우선 복잡한 게 아닌, 우리 주변에서도 정말 쉽게 찾아볼 수 있는 그저 간단한 규칙 입니디.

예시를 찾아보며 최대한 간단하게 설명해볼께요


스택(STACK)

우리 주변에서 스택의 개념을 사용하고 있는 것을 정말 쉽게 찾아볼 수 있는데요.
크롬이나 삼성 인터넷 같은 인터넷 브라우저에서 찾아볼 수 있습니다. 분명 여러분도 많이 쓰는 기능일꺼에요.

스택이란 규칙에 대해 정말 간단하게 설명을 해볼께요

 

최근 제가 택배를 많이 시켜서 문득 생각이 났는데, 

이 택배에도 스택의 구조를 찾아볼 수 있습니다.

택배로 한 번 예시를 들어볼께요.


집 현관문 앞에 택배 상자가 3개가 순서대로 쌓여있다고 생각해봅시다.
만약 추가로 택배가 더 오게 된다면 그 위에 4번째로 올리게 되겠죠?

내가 두 번째 택배의 정보를 확인하고 싶다면, 
네번째 택배와 세번째 택배를 다른 곳으로 내려놓아야만 확인할 수 있죠?


이처럼 스택은 데이터(택배상자)가 순서대로 위로 쌓여 있는 형태이고,
맨 위에 쌓여있는 데이터만 수정하거나 확인할 수 있기에
(맨 위에 있는 택배 상자를 먼저 치워야 그 아래꺼를 보거나 가져갈 수 있죠)
아래 데이터를 조회하고자 하면,
(아래 택배의 송장을 읽어보자고 하면)
그 위에 쌓여있는 데이터들(택배들)을 순서대로 치운 후 확인을 할 수 있습니다.

이런 식으로, 데이터를 한 줄로 쌓으며, 

한 쪽 끝에서만 데이터를 넣거나 뺄 수 있는 구조를 스택이라고 합니다.

 

 

크롬, 삼성 인터넷을 예시로 들었는데.
브라우저들의 이전 페이지, 다음 페이지로 이동 하는 기능이 바로 스택입니다.


예를 들어, 구글에 접속 -> naver 입력 -> 네이버 접속 -> 로그인 버튼 클릭을 하였다고 했을 때

최근 방문 기록이 아래와 같이 스택의 형태로 쌓이게 됩니다.


만약 두 번째 있는 구글 검색 결과 페이지로 되돌아가고자 한다면,
네번째와 세 번째 있는 데이터를 거친 후에 두 번째로 되돌아갈 수 있습니다.


하나 더 예시를 들어보자면
ppt에서 도형을 추가하거나, 텍스트를 추가하거나, 글자 크기를 수정하는 모든 동작이 스택으로 기록되며,
되돌리기 기능을 사용하는 순간 스택에 기록했던 데이터를 하나씩 되돌리는 것입니다.

이 외에도 pc 메모장이나 워드 등에서 텍스트를 잘못 입력했을 때, ctrl + z를 사용해 내용을 되돌리는 기능 또한
스택 구조에 해당합니다.

큐(queues)

큐는 위에서 설명한 스택과는 조금 다른 개념입니다.

 

큐는 더 간단하게
놀이기구 대기줄을 생각하시면 될 것 같은데요.
먼저 기다린 사람이 먼저 놀이기구를 타게 되죠?


먼저 들어온 데이터가 먼저 나갈 수 있는 구조.
이게 바로 큐 입니다

스택과의 다른 점은.
스택은 마지막에 쌓인 데이터가 먼저 나오는 것 이고,
큐는 먼저 쌓인 데이터가 먼저 나오는 것 입니다.

 

시스템에 이 자료구조가 주로 사용되는 곳으론,

프린터기의 출력 처리, 푸시 발송 시스템 등이 있습니다.

 

 

좀 더 자세한 내용

세상엔 데이터를 다룰 수 있는 여러가지 자료구조들이 있고,
그 중 자료구조의 방법이 코드로 정의되지 않았고,
작동 방법으로만 정의된 자료구죠를
추상적 자료구조(ADT) 라고 하며

대표적으로 큐와 스택이 이에 해당합니다.


스택을 다른 말로 후입선출,
큐의 경우엔 선입선출 이라고 부릅니다.

영어권에선 아래와 같이 부르기도 합니다.
스택 - 후입선출 : Last In, First Out. (LIFO), 끝먼저내기 목록(Pushdown list)
큐 - 선입선출 : First In, First Out (FIFO) 

 

 

 

 

 

반응형

댓글