[코드스테이츠 백엔드 44기 SEB BE] 23일차
자료 구조
데이터
- 데이터(data)
- 문자, 소리, 그림, 숫자 등 실생활을 구성하는 모든 값
- 데이터 자체만으로는 정보를 가지기 힘들다
- 데이터를 분석 / 정리해서 활용할 때 의미를 가진다
- 데이터는 사용하려는 목적에 따라 형태를 구분하고, 분류하여 사용한다
- 서로 다른 형태의 데이터를 하나의 방법으로만 정리하고 활용하는 것은 비효율적이다
- 필요에 따라 데이터의 특징을 분석해 정리하고, 활용해야 한다!
- 데이터를 체계적으로 정리하여 저장해두는 것이, 데이터 활용에 있어 유리하다!
자료 구조
- 자료 구조
- 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것
- 무수한 상황에서 데이터를 효율적으로 다룰 수 있는 방법을 모아둔 것
- Ex. Stack, Queue, Tree, Graph, ...
- 대부분의 자료 구조는 특정한 상황에 놓인 문제를 해결하는 데에 특화되어 있다
- 특정 문제를 해결하는 데에 적합한 자료 구조를 찾아 데이터를 정리하고 활용할 줄 안다면, 상황에 가장 적합하고 정확한 코드를 작성할 수 있다
Stack
Stack의 구조
- 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근
- 이러한 Stack 자료 구조의 정책 : LIFO(Last In First Out) 혹은 FILO(First In Last Out)
- Stack에 데이터를 넣는 것을 'push', 꺼내는 것을 'pop'이라 부른다
Stack의 특징
1. LIFO(Last In First Out)
- 먼저 들어간 데이터는 제일 나중에 나오는 후입선출의 구조를 가지고 있다
2. 데이터는 하나씩 넣고 뺄 수 있다
- 한꺼번에 여러 개의 데이터를 넣거나 뺄 수 없다
3. 하나의 입출력 방향으로 가지고 있다
- 데이터의 입출력 방향이 같다
- 입출력 방향이 여러 개라면 Stack 구조라고 볼 수 없다
Queue
- 실사용 예제 : 여러 문서를 순서대로 인쇄하는 프린터
Queue의 구조
- 입력과 출력 방향이 고정되어 있으며, 두 곳으로 접근이 가능하다
- 먼저 들어간 데이터가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out)을 특징으로 갖고 있다
- 데이터를 넣는 것을 'enqueue', 꺼내는 것을 'dequeue'라고 부른다
- Queue는 데이터를 입력된 순서대로 처리할 때 주로 사용된다
Queue의 특징
1. FIFO(First In First Out)
- 먼저 들어간 데이터가 제일 처음에 나오는 선입선출 구조를 가지고 있다
2. 데이터는 하나씩 넣고 뺄 수 있다
- 한꺼번에 여러 개의 데이터를 넣거나 뺄 수 없다
3. 두 개의 입출력 방향을 가지고 있다
- 데이터의 입력, 출력 방향이 다르다
- 입출력 방향이 같다면 Queue 구조라고 볼 수 없다