TIL 33일차 - Stack & Queue

박진현·2021년 7월 22일
0

TIL

목록 보기
33/71

자료구조란 ?

자료구조란 여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의한 것이다.

자료구조의 목적은 명확하다. 자료를 더 효율적으로 저장하고, 관리하기 위해 사용하며, 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리를 절약할 수 있다.

자료구조의 특징

  • 추상화
  • 효율성
  • 재사용성

자료구조의 분류

  • 선형구조
    • 배열(Array)
    • 연결 리스트(Linked List)
    • 스택(Stack)
    • 큐(Queue)
  • 비선형 구조
    • 트리(Tree)
    • 그래프(Graph)

Stack

FILO (First In Last Out ) && LIFO ( Last In Frist Out )
데이터를 쌓는 자료구조, 가장 먼저 들어간 데이터는 가장 나중에 나온다.
막다른 골목길에 진입한 차량들을 생각해보면 먼저 들어간 차는 절대 먼저 나올 수 없다.
나중에 들어온 순서대로 차들이 나가야지만 첫번째 차량이 나갈 수 있게된다.
Stack은 이처럼 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근이라는 특성이 있다.

Stack의 실사용 예제

prev Stack ( 뒤로가기 )
current Page ( 현재페이지 )
Next Stack ( 앞으로가기 )
우리가 흔히 사용하는 뒤로가기,앞으로가기가 Stack의 대표적인 예제이다.

Queue

FIFO ( First in First Out ) && LILO ( Last In Last Out )
Stack과는 반대되는 개념으로, 먼저 들어간 데이터가 먼저 나온다.
고속도로의 톨게이트에 진입한 차량들을 생각해보면 먼저 들어간 차가 가장 먼저 나오게 된다.
나중에 들어온 차는 앞 차가 나갈때까지 기다려야만 한다. 뒷차가 이미 요금을 냈더라도 앞차가 나갈때까지 기다려야된다는 특징을 가지고 있다.
자료구조 Queue는 주로 데이터가 입력된 순서대로 처리되어야 할 때 주로 사용한다.

Queue의 실사용 예제

1.컴퓨터 출력버튼
2. 임시기억장치의 Queue에 하나씩 들어옴
3. Queue에 들어온 문서를 순서대로 인쇄 Queue에 들어온 문서를 순서대로 인쇄
프린터는 들어온 문서를 순서대로 인쇄하기 때문에 인쇄 결과물이 뒤섞여있지 않다.

Buffer

컴퓨터 장치들 사이에서 데이터를 주고 받을 때, 각 장치 사이에 존재하는 속도의 차이나 시간 차이를 극복하기 위해 임시 기억 장치의 자료구조로 Queue를 사용한다. 이것을 통틀어 Buffer라고 한다.
( CPU는 이미 작업을 끝내고 다른 작업을 시작한다. 끝낸 작업을 처리하는 장치는 아직 그 작업을 수행하지 못할 때 , 작업을 Queue에 저장하고 앞에서부터 하나씩 꺼내서 장치로 작업을 수행한다.

유튜브에서 가끔씩 버퍼링이 일어날 때가 있는데 이도 같은 원리이다.
다운로드 된 데이터가 영상을 재생하기에 충분하지 않은 경우 Queue에 데이터들을 저장해놓고 영상재생조건이 충족되었을때 Queue에 쌓여있는 데이터들을 순차적으로 재생하게 된다.

알고리즘

알고리즘 66~78번까지 총 13문제를 풀었다.

  • 배열에 ''를 지울땐 Array.filter(Boolean) 이젠 잊어버리지 말자!
  • 숫자가 정수인지, 실수인지 체크하는 2가지 방법
    • Number.isInteger()
    • 나머지 연산자(%)
  • str,arr의 중복문자 제거는 new Set(array)을 사용하면 좋다. 다만 결과값이 set객체로 나온다는 것을 꼭 인지해야된다. 이후 Set객체를 배열로 변환하면 된다.

회고

자료구조.. 쉽지않다 정말 쉽지 않다.

profile
👨🏻‍💻 호기심이 많고 에러를 좋아하는 프론트엔드 개발자 박진현 입니다.

0개의 댓글