병목 현상을 처리해보자 / 시간복잡도 / 이진트리 / 스택 / 큐 / 힙 / 트리
학습목표
어떤 데이터들을 묶음으로 저장하고, 사용하는 방법을 정의하는 것 (데이터는 문자, 숫자, 소리, 그림, 영상 등 실생활을 구성하고 있는 모든 값)
왜 필요한가? 수많은 데이터를 관리하기 위해서는 체계적으로 정리하고 저장해두는 것이 훨씬 유리하다!
정말 다양한 구조들이 있다. 그 중 가장 많이 접할 수 있는 스택, 큐, 트리, 그랩에 대해 알아보자.
자주 등장하는 네 가지의 자료구조
자료구조는 특정한 상황에 맞게 문제를 해결할 수 있게 특화되어 있다.
:데이터를 순서대로 쌓는 구조
자료구조 Stack의 특징은 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근
→ Stack 자료구조의 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)
가장 쉽게 적용된것 브라우저에 바로 뒤로 돌아가기 버튼입니다.
:”줄을 서서 기다리다" Queue는 Stack과 반대되는 개념으로, 먼저 들어간 데이터(data)가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out)을 특징으로 가지고 있습니다.
실제예시) 프린터는 인쇄 작업 Queue에 들어온 문서를 순서대로 인쇄하는 과정, 데이터가 스택에 쌓이고 버퍼링이 진행된 후 실행되는 동영상들
(위 예시처럼 컴퓨터 장치들 사이에서 데이터(data)를 주고 받을 때, 각 장치 사이에 존재하는 속도의 차이
나 시간 차이를 극복하기 위해 임시 기억 장치의 자료구조로 Queue를 사용합니다. 이것을 통틀어 버퍼(buffer)
라고 합니다. 아래 이미지는 버퍼링(buffering)의 개념을 보여주고 있습니다.)
CPU에서는 규칙적인 처리를 하지만 컴퓨터 이벤트에서는 불규칙적으로 처리한다!
자바스크립트로 진행